You've already forked lazarus-ccr
fpspreadsheet: Fix reading of text cells with type "inlineStr"
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7936 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@@ -887,12 +887,12 @@ procedure TsSpreadOOXMLReader.ReadCell(ANode: TDOMNode;
|
|||||||
var
|
var
|
||||||
book: TsWorkbook;
|
book: TsWorkbook;
|
||||||
sheet: TsWorksheet;
|
sheet: TsWorksheet;
|
||||||
addr, s: String;
|
addr, s, typeStr: String;
|
||||||
rowIndex, colIndex: Cardinal;
|
rowIndex, colIndex: Cardinal;
|
||||||
cell: PCell;
|
cell: PCell;
|
||||||
lCell: TCell;
|
lCell: TCell;
|
||||||
sharedFormulabase: TSharedFormulaData;
|
sharedFormulabase: TSharedFormulaData;
|
||||||
datanode, tnode: TDOMNode;
|
datanode, tnode, rnode: TDOMNode;
|
||||||
dataStr: String;
|
dataStr: String;
|
||||||
formulaStr: String;
|
formulaStr: String;
|
||||||
formula: PsFormula;
|
formula: PsFormula;
|
||||||
@@ -940,6 +940,9 @@ begin
|
|||||||
cell^.FormatIndex := 0;
|
cell^.FormatIndex := 0;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
// Get cell type
|
||||||
|
typeStr := GetAttrValue(ANode, 't');
|
||||||
|
|
||||||
// get number format parameters
|
// get number format parameters
|
||||||
numFmt := book.GetNumberFormat(fmt.NumberFormatIndex);
|
numFmt := book.GetNumberFormat(fmt.NumberFormatIndex);
|
||||||
|
|
||||||
@@ -958,6 +961,15 @@ begin
|
|||||||
tnode := datanode.FirstChild;
|
tnode := datanode.FirstChild;
|
||||||
while Assigned(tnode) do begin
|
while Assigned(tnode) do begin
|
||||||
nodename := tnode.NodeName;
|
nodename := tnode.NodeName;
|
||||||
|
if (nodename = 'r') and (typeStr = 'inlineStr') then begin
|
||||||
|
rnode := tnode.FirstChild;
|
||||||
|
while Assigned(rnode) do begin
|
||||||
|
nodename := rnode.NodeName;
|
||||||
|
if (nodename = 't') or (nodeName = 'x:t') then
|
||||||
|
dataStr := dataStr + GetNodeValue(rnode);
|
||||||
|
rnode := rnode.NextSibling;
|
||||||
|
end;
|
||||||
|
end else
|
||||||
if (nodename = 't') or (nodeName = 'x:t') then
|
if (nodename = 't') or (nodeName = 'x:t') then
|
||||||
dataStr := dataStr + GetNodeValue(tnode);
|
dataStr := dataStr + GetNodeValue(tnode);
|
||||||
tnode := tnode.NextSibling;
|
tnode := tnode.NextSibling;
|
||||||
|
Reference in New Issue
Block a user