diff --git a/components/fpspreadsheet/tests/datetests.pas b/components/fpspreadsheet/tests/datetests.pas
index 93da57b2a..0f59628af 100644
--- a/components/fpspreadsheet/tests/datetests.pas
+++ b/components/fpspreadsheet/tests/datetests.pas
@@ -215,6 +215,7 @@ type
procedure TestWriteReadDates_BIFF5;
procedure TestWriteReadDates_BIFF8;
procedure TestWriteReadDates_ODS;
+ procedure TestWriteReadDates_OOXML;
end;
@@ -364,6 +365,11 @@ begin
TestWriteReadDates(sfOpenDocument);
end;
+procedure TSpreadWriteReadDateTests.TestWriteReadDates_OOXML;
+begin
+ TestWriteReadDates(sfOOXML);
+end;
+
{ TSpreadReadDateTests }
diff --git a/components/fpspreadsheet/tests/formattests.pas b/components/fpspreadsheet/tests/formattests.pas
index 9e7e0f7c7..97a8569a0 100644
--- a/components/fpspreadsheet/tests/formattests.pas
+++ b/components/fpspreadsheet/tests/formattests.pas
@@ -113,8 +113,15 @@ type
procedure TestWriteRead_ODS_BorderStyles;
procedure TestWriteRead_ODS_ColWidths;
procedure TestWriteRead_ODS_RowHeights;
+ procedure TestWriteRead_ODS_DateTimeFormats;
+ procedure TestWriteRead_ODS_NumberFormats;
procedure TestWriteRead_ODS_TextRotation;
procedure TestWriteRead_ODS_WordWrap;
+
+ { OOXML Tests }
+ procedure TestWriteRead_OOXML_DateTimeFormats;
+ procedure TestWriteRead_OOXML_NumberFormats;
+
end;
implementation
@@ -155,9 +162,9 @@ begin
SollNumbers[0] := 0.0;
SollNumbers[1] := 1.0;
SollNumbers[2] := -1.0;
- SollNumbers[3] := 1.2345E6;
+ SollNumbers[3] := 1.23456E6;
SollNumbers[4] := -1.23456E6;
- SollNumbers[5] := 1.23456E-6;
+ SollNumbers[5] := 1.23456E-6;
SollNumbers[6] := -1.23456E-6;
SollNumberFormats[0] := nfGeneral; SollNumberDecimals[0] := 0;
@@ -292,13 +299,14 @@ begin
begin
MyWorksheet.WriteNumber(Row, Col, SollNumbers[Row], SollNumberFormats[Col], SollNumberDecimals[Col]);
ActualString := MyWorksheet.ReadAsUTF8Text(Row, Col);
- CheckEquals(SollNumberStrings[Row, Col], ActualString, 'Test unsaved string mismatch cell ' + CellNotation(MyWorksheet,Row,Col));
+ CheckEquals(SollNumberStrings[Row, Col], ActualString,
+ 'Test unsaved string mismatch cell ' + CellNotation(MyWorksheet,Row,Col));
end;
TempFile:=NewTempFile;
MyWorkBook.WriteToFile(TempFile, AFormat, true);
MyWorkbook.Free;
- // Open the spreadsheet, as biff8
+ // Open the spreadsheet
MyWorkbook := TsWorkbook.Create;
MyWorkbook.ReadFromFile(TempFile, AFormat);
if AFormat = sfExcel2 then
@@ -311,7 +319,8 @@ begin
for Col := Low(SollNumberFormats) to High(SollNumberFormats) do
begin
ActualString := MyWorkSheet.ReadAsUTF8Text(Row,Col);
- CheckEquals(SollNumberStrings[Row,Col],ActualString,'Test saved string mismatch cell '+CellNotation(MyWorkSheet,Row,Col));
+ CheckEquals(SollNumberStrings[Row,Col], ActualString,
+ 'Test saved string mismatch cell '+CellNotation(MyWorkSheet,Row,Col));
end;
// Finalization
@@ -335,6 +344,16 @@ begin
TestWriteReadNumberFormats(sfExcel8);
end;
+procedure TSpreadWriteReadFormatTests.TestWriteRead_ODS_NumberFormats;
+begin
+ TestWriteReadNumberFormats(sfOpenDocument);
+end;
+
+procedure TSpreadWriteReadFormatTests.TestWriteRead_OOXML_NumberFormats;
+begin
+ TestWriteReadNumberFormats(sfOOXML);
+end;
+
{ --- Date/time formats --- }
@@ -409,6 +428,15 @@ begin
TestWriteReadDateTimeFormats(sfExcel8);
end;
+procedure TSpreadWriteReadFormatTests.TestWriteRead_ODS_DateTimeFormats;
+begin
+ TestWriteReadDateTimeFormats(sfOpenDocument);
+end;
+
+procedure TSpreadWriteReadFormatTests.TestWriteRead_OOXML_DateTimeFormats;
+begin
+ TestWriteReadDateTimeFormats(sfOOXML);
+end;
{ --- Alignment tests --- }
diff --git a/components/fpspreadsheet/tests/numberstests.pas b/components/fpspreadsheet/tests/numberstests.pas
index 6c0192ec0..136d6433b 100644
--- a/components/fpspreadsheet/tests/numberstests.pas
+++ b/components/fpspreadsheet/tests/numberstests.pas
@@ -105,6 +105,7 @@ type
procedure TestWriteReadNumbers_BIFF5;
procedure TestWriteReadNumbers_BIFF8;
procedure TestWriteReadNumbers_ODS;
+ procedure TestWriteReadNumbers_OOXML;
end;
@@ -169,7 +170,6 @@ var
Row: Cardinal;
TempFile: string; //write xls/xml to this file and read back from it
begin
- //todo: add support for ODF format
{// Not needed: use workbook.writetofile with overwrite=true
if fileexists(TempFile) then
DeleteFile(TempFile);
@@ -230,6 +230,11 @@ begin
TestWriteReadNumbers(sfOpenDocument);
end;
+procedure TSpreadWriteReadNumberTests.TestWriteReadNumbers_OOXML;
+begin
+ TestWriteReadNumbers(sfOOXML);
+end;
+
{ TSpreadReadNumberTests }
diff --git a/components/fpspreadsheet/tests/spreadtestgui.lpi b/components/fpspreadsheet/tests/spreadtestgui.lpi
index 0b8a1cc2e..ae08248f0 100644
--- a/components/fpspreadsheet/tests/spreadtestgui.lpi
+++ b/components/fpspreadsheet/tests/spreadtestgui.lpi
@@ -89,6 +89,7 @@
+
@@ -106,6 +107,7 @@
+
diff --git a/components/fpspreadsheet/xlsxooxml.pas b/components/fpspreadsheet/xlsxooxml.pas
index 461c5cce1..40b988730 100755
--- a/components/fpspreadsheet/xlsxooxml.pas
+++ b/components/fpspreadsheet/xlsxooxml.pas
@@ -597,15 +597,17 @@ var
fmtStr: String;
nodeName: String;
begin
- node := ANode.FirstChild;
- while Assigned(node) do begin
- nodeName := node.NodeName;
- if nodeName = 'numFmt' then begin
- idStr := GetAttrValue(node, 'numFmtId');
- fmtStr := GetAttrValue(node, 'formatCode');
- NumFormatList.AnalyzeAndAdd(StrToInt(idStr), fmtStr);
+ if Assigned(ANode) then begin
+ node := ANode.FirstChild;
+ while Assigned(node) do begin
+ nodeName := node.NodeName;
+ if nodeName = 'numFmt' then begin
+ idStr := GetAttrValue(node, 'numFmtId');
+ fmtStr := GetAttrValue(node, 'formatCode');
+ NumFormatList.AnalyzeAndAdd(StrToInt(idStr), fmtStr);
+ end;
+ node := node.NextSibling;
end;
- node := node.NextSibling;
end;
end;
@@ -1373,7 +1375,8 @@ begin
'');
for i:=1 to Workbook.GetWorksheetCount do
AppendToStream(FSWorkbook, Format(
- '', [i, i, i+2]));
+ '', [Workbook.GetWorksheetByIndex(i-1).Name, i, i+2]));
+ // '', [i, i, i+2]));
AppendToStream(FSWorkbook,
'');
AppendToStream(FSWorkbook,
@@ -1831,7 +1834,11 @@ begin
CellPosText := TsWorksheet.CellPosToText(ARow, ACol);
lStyleIndex := GetStyleIndex(ACell);
lDateTime := ConvertDateTimeToExcelDateTime(AValue, FDateMode);
- CellValueText := Format('%g', [lDateTime], FPointSeparatorSettings);
+ // !!!!!!!!!!!!!!!!!!!!! NEED "IF" TO CHECK FOR DATE/TIME !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+// CellValueText := Format('%g', [lDateTime], FPointSeparatorSettings);
+ CellValueText := FloatToStr(lDateTime, FPointSeparatorSettings);
+
AppendToStream(AStream, Format(
'%s', [CellPosText, lStyleIndex, CellValueText]));
end;