From c76d1bdbff5dc788f59cf0291e833c663217a7f3 Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Sun, 10 Aug 2014 15:16:58 +0000 Subject: [PATCH] fpspreadsheet: Improved xf format detection by OOXML reader. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3465 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- .../examples/spready/mainform.lfm | 86 +++++++++++++++++-- components/fpspreadsheet/xlsxooxml.pas | 10 +-- 2 files changed, 84 insertions(+), 12 deletions(-) diff --git a/components/fpspreadsheet/examples/spready/mainform.lfm b/components/fpspreadsheet/examples/spready/mainform.lfm index 69c3569f5..ff8fd3842 100644 --- a/components/fpspreadsheet/examples/spready/mainform.lfm +++ b/components/fpspreadsheet/examples/spready/mainform.lfm @@ -1,10 +1,10 @@ object Form1: TForm1 Left = 409 - Height = 649 - Top = 248 + Height = 639 + Top = 258 Width = 884 Caption = 'spready' - ClientHeight = 629 + ClientHeight = 619 ClientWidth = 884 Menu = MainMenu OnActivate = FormActivate @@ -14,7 +14,7 @@ object Form1: TForm1 object Panel1: TPanel Left = 0 Height = 85 - Top = 544 + Top = 534 Width = 884 Align = alBottom BevelOuter = bvNone @@ -106,7 +106,7 @@ object Form1: TForm1 end object PageControl1: TPageControl Left = 0 - Height = 465 + Height = 455 Top = 79 Width = 884 ActivePage = TabSheet1 @@ -116,11 +116,11 @@ object Form1: TForm1 OnChange = PageControl1Change object TabSheet1: TTabSheet Caption = 'Sheet1' - ClientHeight = 437 + ClientHeight = 427 ClientWidth = 876 object WorksheetGrid: TsWorksheetGrid Left = 0 - Height = 437 + Height = 427 Top = 0 Width = 876 FrozenCols = 0 @@ -662,9 +662,81 @@ object Form1: TForm1 end object MenuItem65: TMenuItem Action = AcAddColumn + Bitmap.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00D69E + 72C4D3996EF4D19668FFCE9263FFCB8E5EFFC98A5BFFC78756FFC38452FFC384 + 52FFC38452FFC38452FFC38452FFC38452FFBB7742B0FFFFFF00FFFFFF00D7A1 + 75FFF8F2EDFFF7F0EAFFF6EDE6FFF4EAE2FFF3E7DEFFF1E4DBFFF0E2D8FFF0E2 + D8FFF0E2D8FFF0E2D8FFF0E2D8FFF0E2D8FFC58A5DFDFFFFFF00FFFFFF00D9A4 + 7AFFF9F3EEFF1D5F21FF226526FF276D2CFFFFFFFFFFFFFFFFFFFFFFFFFFEAC7 + ADFFFFFFFFFFFFFFFFFFFFFFFFFFF0E2D8FFC68C5FFFFFFFFF00FFFFFF00DDA8 + 7EFFF9F3EFFF276D2CFF84C68AFF347E3AFFEBD0BBFFEBD0BBFFEBD1BDFFEACD + B5FFEACDB5FFEACDB5FFEACDB5FFF0E2D8FFC68A5CFFFFFFFF00FFFFFF00DFAA + 82FFF9F3EFFF2E7533FF92CC97FF3B8842FFFFFFFFFFFFFFFFFFFFFFFFFFEACF + BAFFFBF6F2FFFFFFFFFFFFFFFFFFF0E2D8FFC88D5FFFFFFFFF00FFFFFF00E1AE + 87FFFAF4F0FF347E3AFFA0D3A4FF42924AFFEACCB3FFEACCB3FFEACEB7FFE8C7 + ACFFE8C7ACFFE8C8B0FFE8C8AEFFF0E2D8FFC48654FFFFFFFF00FFFFFF00E3B1 + 8CFFFAF6F1FF3B8842FFACD8B0FF489B51FFFFFFFFFFFFFFFFFFFFFFFFFFE8C7 + ACFFFFFFFFFFFFFFFFFFFFFFFFFFF1E5DBFFC68655FFFFFFFF00FFFFFF00E5B4 + 8FFFFAF6F2FF42924AFFB6DDBAFF4FA358FFE9C7ADFFE9C9AEFFE9C9B0FFE8C7 + ACFFE9C9B0FFE8C8B0FFE8CCB5FFF2E7DEFFC88A59FFFFFFFF00FFFFFF00E7B7 + 94FFFBF7F4FF489B51FFB9DFBDFF54AB5EFFFFFFFFFFFFFFFFFFFFFFFFFFE8C7 + ACFF84B094FF257341FF196B37FF247240FF6C7C4AFFFFFFFF00FFFFFF00E9BA + 98FFFBF7F4FF4FA358FF4FA358FF59B163FFE9C3A6FFE9C3A6FFE9C3A6FFA2AE + 8EFF288C53FF64BA8DFF95D2B2FF64BA8DFF288C53FF196B378CFFFFFF00EBBD + 9BFFFBF7F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2270 + 3EFF62BA8BFF60BA87FFFFFFFFFF60B987FF67BC8FFF196B37F7FFFFFF00ECBF + 9EFFFBF7F4FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF317B + 4CFF9CD4B6FFFFFFFFFFFFFFFFFFFFFFFFFF95D2B2FF196B37FFFFFFFF00EEC1 + A1EBFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FF4989 + 60FF90D3B1FF92D6B1FFFFFFFFFF65BC8CFF67BC8FFF196B37F7FFFFFF00EFC2 + A37EEFC1A2E3EDC09FFFEBBE9DFFEBBC9AFFE9BA96FFE7B793FFE6B590FF9DAF + 91FF61AB81FF95D4B4FFBAE6D0FF6ABB8FFF2D8F57FF196B378CFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00A2AE8EFF5F9771FF4F8E66FF49895FFFA2AE8EFFFFFFFF00 + } end object MenuItem66: TMenuItem Action = AcAddRow + Bitmap.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00D69E + 72C4D3996EF4D19668FFCE9263FFCB8E5EFFC98A5BFFC78756FFC38452FFC384 + 52FFC38452FFC38452FFC38452FFC38452FFBB7742B0FFFFFF00FFFFFF00D7A1 + 75FFF8F2EDFFF7F0EAFFF6EDE6FFF4EAE2FFF3E7DEFFF1E4DBFFF0E2D8FFF0E2 + D8FFF0E2D8FFF0E2D8FFF0E2D8FFF0E2D8FFC58A5DFDFFFFFF00FFFFFF00D9A4 + 7AFFF9F3EEFFEBD2BEFFFFFFFFFFEBD3BFFFFFFFFFFFFFFFFFFFFFFFFFFFEAC7 + ADFFFFFFFFFFFFFFFFFFFFFFFFFFF0E2D8FFC68C5FFFFFFFFF00FFFFFF00DDA8 + 7EFFF9F3EFFF4FA358FF489B51FF42924AFF42924AFF3B8842FF347E3AFF2E75 + 33FF276D2CFF226526FF1D5F21FFF0E2D8FFC68A5CFFFFFFFF00FFFFFF00DFAA + 82FFF9F3EFFF58B162FFB9DFBDFFB6DDBAFFB6DDBAFFACD8B0FFA0D3A4FF92CC + 97FF84C68AFF79C17EFF226526FFF0E2D8FFC88D5FFFFFFFFF00FFFFFF00E1AE + 87FFFAF4F0FF59B163FF54AB5EFF4FA358FF4FA358FF489B51FF42924AFF3B88 + 42FF347E3AFF2E7533FF276D2CFFF0E2D8FFC48654FFFFFFFF00FFFFFF00E3B1 + 8CFFFAF6F1FFEAC9AEFFFFFFFFFFEAC9B0FFFFFFFFFFFFFFFFFFFFFFFFFFE8C7 + ACFFFFFFFFFFFFFFFFFFFFFFFFFFF1E5DBFFC68655FFFFFFFF00FFFFFF00E5B4 + 8FFFFAF6F2FFE9C6AAFFE9C6ACFFEAC7ACFFE9C7ADFFE9C9AEFFE9C9B0FFE8C7 + ACFFE9C9B0FFE8C8B0FFE8CCB5FFF2E7DEFFC88A59FFFFFFFF00FFFFFF00E7B7 + 94FFFBF7F4FFE9C3A6FFFFFFFFFFE8C4A9FFFFFFFFFFFFFFFFFFFFFFFFFFE8C7 + ACFF84B094FF257341FF196B37FF247240FF6C7C4AFFFFFFFF00FFFFFF00E9BA + 98FFFBF7F4FFE9C3A6FFE9C3A6FFE9C3A6FFE9C3A6FFE9C3A6FFE9C3A6FFA2AE + 8EFF288C53FF64BA8DFF95D2B2FF64BA8DFF288C53FF196B378CFFFFFF00EBBD + 9BFFFBF7F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2270 + 3EFF62BA8BFF60BA87FFFFFFFFFF60B987FF67BC8FFF196B37F7FFFFFF00ECBF + 9EFFFBF7F4FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF317B + 4CFF9CD4B6FFFFFFFFFFFFFFFFFFFFFFFFFF95D2B2FF196B37FFFFFFFF00EEC1 + A1EBFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FF4989 + 60FF90D3B1FF92D6B1FFFFFFFFFF65BC8CFF67BC8FFF196B37F7FFFFFF00EFC2 + A37EEFC1A2E3EDC09FFFEBBE9DFFEBBC9AFFE9BA96FFE7B793FFE6B590FF9DAF + 91FF61AB81FF95D4B4FFBAE6D0FF6ABB8FFF2D8F57FF196B378CFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00A2AE8EFF5F9771FF4F8E66FF49895FFFA2AE8EFFFFFFFF00 + } end end object mnuFormat: TMenuItem diff --git a/components/fpspreadsheet/xlsxooxml.pas b/components/fpspreadsheet/xlsxooxml.pas index 74edf1ba1..8f75f538e 100755 --- a/components/fpspreadsheet/xlsxooxml.pas +++ b/components/fpspreadsheet/xlsxooxml.pas @@ -725,19 +725,19 @@ begin // to check against "<>0" instead of "=1" s1 := GetAttrValue(node, 'numFmtId'); s2 := GetAttrValue(node, 'applyNumberFormat'); - if (s2 <> '') and (s2 <> '0') then xf.NumFmtIndex := StrToInt(s1); + if (s1 <> '') and (s2 <> '0') then xf.NumFmtIndex := StrToInt(s1); s1 := GetAttrValue(node, 'fontId'); s2 := GetAttrValue(node, 'applyFont'); - if (s2 <> '') and (s2 <> '0') then xf.FontIndex := StrToInt(s1); + if (s1 <> '') and (s2 <> '0') then xf.FontIndex := StrToInt(s1); s1 := GetAttrValue(node, 'fillId'); s2 := GetAttrValue(node, 'applyFill'); - if (s2 <> '') and (s2 <> '0') then xf.FillIndex := StrToInt(s1); + if (s1 <> '') and (s2 <> '0') then xf.FillIndex := StrToInt(s1); s1 := GetAttrValue(node, 'borderId'); s2 := GetAttrValue(node, 'applyBorder'); - if (s2 <> '') and (s2 <> '0') then xf.BorderIndex := StrToInt(s1); + if (s1 <> '') and (s2 <> '0') then xf.BorderIndex := StrToInt(s1); s2 := GetAttrValue(node, 'applyAlignment'); if (s2 <> '0') then begin @@ -766,7 +766,7 @@ begin xf.VertAlignment := vaBottom; s1 := GetAttrValue(childNode, 'wrapText'); - if (s2 <> '0') then + if (s1 <> '0') then xf.WordWrap := true; s1 := GetAttrValue(childNode, 'textRotation');