diff --git a/components/fpspreadsheet/examples/spready/spready.lpi b/components/fpspreadsheet/examples/spready/spready.lpi
index 7775072a1..39a334c0e 100644
--- a/components/fpspreadsheet/examples/spready/spready.lpi
+++ b/components/fpspreadsheet/examples/spready/spready.lpi
@@ -93,16 +93,13 @@
-
+
-
+
-
-
-
-
+
diff --git a/components/fpspreadsheet/examples/spready/spready.lpr b/components/fpspreadsheet/examples/spready/spready.lpr
index e20dec961..ab244e99b 100644
--- a/components/fpspreadsheet/examples/spready/spready.lpr
+++ b/components/fpspreadsheet/examples/spready/spready.lpr
@@ -4,7 +4,7 @@ program spready;
uses
Interfaces, // this includes the LCL widgetset
- Forms, mainform, laz_fpspreadsheet_visual, laz_fpspreadsheet;
+ Forms, mainform, laz_fpspreadsheet_visual;
{$R *.res}
diff --git a/components/fpspreadsheet/laz_fpspreadsheet.lpk b/components/fpspreadsheet/laz_fpspreadsheet.lpk
index dbd66ea70..78b5a5f17 100644
--- a/components/fpspreadsheet/laz_fpspreadsheet.lpk
+++ b/components/fpspreadsheet/laz_fpspreadsheet.lpk
@@ -25,7 +25,7 @@
This package is all you need if you don't want graphical components (like grids and charts)."/>
-
+
@@ -114,6 +114,10 @@ This package is all you need if you don't want graphical components (like grids
+
+
+
+
diff --git a/components/fpspreadsheet/laz_fpspreadsheet.pas b/components/fpspreadsheet/laz_fpspreadsheet.pas
index 78de7261f..b87db18a8 100644
--- a/components/fpspreadsheet/laz_fpspreadsheet.pas
+++ b/components/fpspreadsheet/laz_fpspreadsheet.pas
@@ -11,7 +11,7 @@ uses
xlsbiff5, xlsbiff8, xlsxooxml, fpsutils, fpsStreams, fpszipper,
uvirtuallayer_types, uvirtuallayer, uvirtuallayer_ole,
uvirtuallayer_ole_helpers, uvirtuallayer_ole_types, uvirtuallayer_stream,
- fpolebasic, xlscommon, wikitable, fpsNumFormatParser, fpsfunc;
+ fpolebasic, xlscommon, wikitable, fpsNumFormatParser, fpsfunc, fpsxmlcommon;
implementation
diff --git a/components/fpspreadsheet/xlsxooxml.pas b/components/fpspreadsheet/xlsxooxml.pas
index 977f26a64..0bd75f86f 100755
--- a/components/fpspreadsheet/xlsxooxml.pas
+++ b/components/fpspreadsheet/xlsxooxml.pas
@@ -448,6 +448,7 @@ var
FileList : TStringList;
SheetList: TStringList;
i: Integer;
+ fn: String;
BodyNode, SpreadSheetNode, TableNode: TDOMNode;
StylesNode: TDOMNode;
@@ -478,10 +479,12 @@ begin
SheetList := TStringList.Create;
try
// process the sharedStrings.xml file
- ReadXMLFile(Doc, FilePath + OOXML_PATH_XL_STRINGS);
- DeleteFile(FilePath + OOXML_PATH_XL_STRINGS);
- ReadSharedStrings(Doc.DocumentElement.FindNode('si'));
- FreeAndNil(Doc);
+ if FileExists(FilePath + OOXML_PATH_XL_STRINGS) then begin
+ ReadXMLFile(Doc, FilePath + OOXML_PATH_XL_STRINGS);
+ DeleteFile(FilePath + OOXML_PATH_XL_STRINGS);
+ ReadSharedStrings(Doc.DocumentElement.FindNode('si'));
+ FreeAndNil(Doc);
+ end;
// process the styles.xml file
ReadXMLFile(Doc, FilePath + OOXML_PATH_XL_STYLES);
@@ -507,7 +510,9 @@ begin
// unzip sheet file
FileList := TStringList.Create;
try
- FileList.Add(OOXML_PATH_XL_WORKSHEETS + SheetList[i] + '.xml');
+ // The file name is always "sheet.xml", irrespective of the sheet's name!
+ fn := OOXML_PATH_XL_WORKSHEETS + 'sheet' + IntToStr(i+1) + '.xml';
+ FileList.Add(fn);
UnZip := TUnZipper.Create;
try
UnZip.OutputPath := FilePath;
@@ -519,8 +524,8 @@ begin
FreeAndNil(FileList);
end;
- ReadXMLFile(Doc, FilePath + OOXML_PATH_XL_WORKSHEETS + SheetList[i] + '.xml');
- DeleteFile(FilePath + OOXML_PATH_XL_WORKSHEETS + SheetList[i] + '.xml');
+ ReadXMLFile(Doc, FilePath + fn);
+ DeleteFile(FilePath + fn);
FWorksheet := AData.AddWorksheet(SheetList[i]);