From cf4ce9f2fad93d746a8e90f0f3c82e1a0d28c7cf Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Wed, 18 Jun 2014 07:44:02 +0000 Subject: [PATCH] fpspreadsheet: Fix regression in detection of decimal places for ods introduced by inconsistency of xml names in OpenDocument specification. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3191 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- .../fpspreadsheet/examples/opendocdemo/opendocwrite.lpr | 5 +++-- components/fpspreadsheet/fpsopendocument.pas | 5 ++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/components/fpspreadsheet/examples/opendocdemo/opendocwrite.lpr b/components/fpspreadsheet/examples/opendocdemo/opendocwrite.lpr index 02b79dde4..97f4fcc0c 100644 --- a/components/fpspreadsheet/examples/opendocdemo/opendocwrite.lpr +++ b/components/fpspreadsheet/examples/opendocdemo/opendocwrite.lpr @@ -36,7 +36,8 @@ begin MyWorksheet := MyWorkbook.AddWorksheet('My Worksheet'); // Write some cells - MyWorksheet.WriteNumber(0, 0, 1.0);// A1 + MyWorksheet.WriteNumber(0, 0, 1.0, nfPercentage, 2);// A1 + (* MyWorksheet.WriteNumber(0, 1, 2.0);// B1 MyWorksheet.WriteNumber(0, 2, 3.0);// C1 MyWorksheet.WriteNumber(0, 3, 4.0);// D1 @@ -234,7 +235,7 @@ begin // Creates a new worksheet MyWorksheet := MyWorkbook.AddWorksheet('My Worksheet 2'); - +*) // Save the spreadsheet to a file MyWorkbook.WriteToFile(MyDir + 'test.ods', sfOpenDocument); diff --git a/components/fpspreadsheet/fpsopendocument.pas b/components/fpspreadsheet/fpsopendocument.pas index 076980cef..3dd599760 100755 --- a/components/fpspreadsheet/fpsopendocument.pas +++ b/components/fpspreadsheet/fpsopendocument.pas @@ -1375,7 +1375,10 @@ procedure TsSpreadOpenDocReader.ReadNumFormats(AStylesNode: TDOMNode); Continue; end else if nodeName = 'number:number' then begin - s := GetAttrValue(node, 'decimal-places'); + if ANumFormatName = 'number:currency-style' then + s := GetAttrValue(node, 'decimal-places') + else + s := GetAttrValue(node, 'number:decimal-places'); if s <> '' then decs := StrToInt(s) else decs := 0; grouping := GetAttrValue(node, 'number:grouping') = 'true'; nf := IfThen(grouping, nfFixedTh, nfFixed);