From 73f87c6979deecf771f3beb102d6c20871ffc35d Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Sun, 14 Jul 2019 18:01:39 +0000 Subject: [PATCH] fpspreadsheet: Support merged cells in Excel 2003/xml reader. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7033 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- components/fpspreadsheet/source/common/xlsxml.pas | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/components/fpspreadsheet/source/common/xlsxml.pas b/components/fpspreadsheet/source/common/xlsxml.pas index 96d670f52..99d00be5a 100644 --- a/components/fpspreadsheet/source/common/xlsxml.pas +++ b/components/fpspreadsheet/source/common/xlsxml.pas @@ -409,6 +409,7 @@ var cell: PCell; fmt: TsCellFormat; idx: Integer; + mergedCols, mergedRows: Integer; begin if ANode = nil then exit; @@ -427,6 +428,14 @@ begin end; end; + // Merged cells + s := GetAttrValue(ANode, 'ss:MergeAcross'); + if not ((s <> '') and TryStrToInt(s, mergedCols)) then mergedCols := 0; + s := GetAttrValue(ANode, 'ss:MergeDown'); + if not ((s <> '') and TryStrToint(s, mergedRows)) then mergedRows := 0; + if (mergedCols > 0) or (mergedRows > 0) then + sheet.MergeCells(ARow, ACol, ARow + mergedRows, ACol + mergedCols); + node := ANode.FirstChild; if node = nil then sheet.WriteBlank(cell)