You've already forked lazarus-ccr
fpspreadsheet: Support "ss:Data" nodes in Excell2003-xml reader.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7029 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -219,6 +219,7 @@ var
|
|||||||
sv: String;
|
sv: String;
|
||||||
node: TDOMNode;
|
node: TDOMNode;
|
||||||
err: TsErrorValue;
|
err: TsErrorValue;
|
||||||
|
cell: PCell;
|
||||||
begin
|
begin
|
||||||
if ANode = nil then
|
if ANode = nil then
|
||||||
exit;
|
exit;
|
||||||
@ -226,30 +227,32 @@ begin
|
|||||||
if nodeName <> 'Cell' then
|
if nodeName <> 'Cell' then
|
||||||
raise Exception.Create('Only Cell nodes expected.');
|
raise Exception.Create('Only Cell nodes expected.');
|
||||||
|
|
||||||
|
cell := sheet.GetCell(ARow, ACol);
|
||||||
|
|
||||||
node := ANode.FirstChild;
|
node := ANode.FirstChild;
|
||||||
if node = nil then
|
if node = nil then
|
||||||
sheet.WriteBlank(ARow, ACol)
|
sheet.WriteBlank(cell)
|
||||||
else
|
else
|
||||||
while node <> nil do begin
|
while node <> nil do begin
|
||||||
nodeName := node.NodeName;
|
nodeName := node.NodeName;
|
||||||
if nodeName = 'Data' then begin
|
if (nodeName = 'Data') or (nodeName = 'ss:Data') then begin
|
||||||
sv := GetNodeValue(node);
|
sv := node.TextContent;
|
||||||
st := GetAttrValue(node, 'ss:Type');
|
st := GetAttrValue(node, 'ss:Type');
|
||||||
case st of
|
case st of
|
||||||
'String':
|
'String':
|
||||||
sheet.WriteText(ARow, ACol, sv);
|
sheet.WriteText(cell, sv);
|
||||||
'Number':
|
'Number':
|
||||||
sheet.WriteNumber(ARow, ACol, StrToFloat(sv, FPointSeparatorSettings));
|
sheet.WriteNumber(cell, StrToFloat(sv, FPointSeparatorSettings));
|
||||||
'DateTime':
|
'DateTime':
|
||||||
sheet.WriteDateTime(ARow, ACol, ExtractDateTime(sv));
|
sheet.WriteDateTime(cell, ExtractDateTime(sv));
|
||||||
'Boolean':
|
'Boolean':
|
||||||
if sv = '1' then
|
if sv = '1' then
|
||||||
sheet.WriteBoolValue(ARow, ACol, true)
|
sheet.WriteBoolValue(cell, true)
|
||||||
else if sv = '0' then
|
else if sv = '0' then
|
||||||
sheet.WriteBoolValue(ARow, ACol, false);
|
sheet.WriteBoolValue(cell, false);
|
||||||
'Error':
|
'Error':
|
||||||
if TryStrToErrorValue(sv, err) then
|
if TryStrToErrorValue(sv, err) then
|
||||||
sheet.WriteErrorValue(ARow, ACol, err);
|
sheet.WriteErrorValue(cell, err);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
node := node.NextSibling;
|
node := node.NextSibling;
|
||||||
|
Reference in New Issue
Block a user