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. }