diff --git a/components/fpspreadsheet/examples/excel8demo/excel8write_format.lpi b/components/fpspreadsheet/examples/excel8demo/excel8write_format.lpi
index 381488aa5..e40d98a11 100644
--- a/components/fpspreadsheet/examples/excel8demo/excel8write_format.lpi
+++ b/components/fpspreadsheet/examples/excel8demo/excel8write_format.lpi
@@ -9,11 +9,11 @@
+
-
@@ -21,7 +21,7 @@
-
+
@@ -39,124 +39,13 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/components/fpspreadsheet/fpspreadsheet.pas b/components/fpspreadsheet/fpspreadsheet.pas
index 2a118e9e5..a5a331f46 100755
--- a/components/fpspreadsheet/fpspreadsheet.pas
+++ b/components/fpspreadsheet/fpspreadsheet.pas
@@ -190,7 +190,8 @@ type
destructor Destroy; override;
function CreateSpreadReader(AFormat: TsSpreadsheetFormat): TsCustomSpreadReader;
function CreateSpreadWriter(AFormat: TsSpreadsheetFormat): TsCustomSpreadWriter;
- procedure ReadFromFile(AFileName: string; AFormat: TsSpreadsheetFormat);
+ procedure ReadFromFile(AFileName: string; AFormat: TsSpreadsheetFormat); overload;
+ procedure ReadFromFile(AFileName: string); overload;
procedure ReadFromStream(AStream: TStream; AFormat: TsSpreadsheetFormat);
procedure WriteToFile(const AFileName: string;
const AFormat: TsSpreadsheetFormat;
@@ -777,6 +778,21 @@ begin
end;
end;
+{@@
+ Reads the document from a file. This method will try to guess the format from
+ the extension. In the case of the ambiguous xls extension, it will simply
+ assume that it is BIFF8. Note that it could be BIFF2, 3, 4 or 5 too.
+}
+procedure TsWorkbook.ReadFromFile(AFileName: string);
+var
+ Str: String;
+begin
+ Str := ExtractFileExt(AFileName);
+ if Str = STR_EXCEL_EXTENSION then ReadFromFile(AFileName, sfExcel8)
+ else if Str = STR_OOXML_EXCEL_EXTENSION then ReadFromFile(AFileName, sfOOXML)
+ else if Str = STR_OPENDOCUMENT_CALC_EXTENSION then ReadFromFile(AFileName, sfOpenDocument);
+end;
+
{@@
Reads the document from a seekable stream.
}