fpspreadsheet: Fix XLSX reader for conditional number format.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7566 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
parent
4fc0ea6045
commit
390c7b935a
@ -2112,6 +2112,7 @@ var
|
|||||||
dxf: TDifferentialFormatData;
|
dxf: TDifferentialFormatData;
|
||||||
fmt: TsCellFormat;
|
fmt: TsCellFormat;
|
||||||
numFmtStr: String;
|
numFmtStr: String;
|
||||||
|
numFmtParams: TsNumFormatParams;
|
||||||
begin
|
begin
|
||||||
uff := [];
|
uff := [];
|
||||||
borders := [];
|
borders := [];
|
||||||
@ -2185,19 +2186,6 @@ begin
|
|||||||
end;
|
end;
|
||||||
pattNode := pattNode.NextSibling;
|
pattNode := pattNode.NextSibling;
|
||||||
end;
|
end;
|
||||||
{
|
|
||||||
fillPatt := GetAttrValue(ANode, 'patternType');
|
|
||||||
childNode := ANode.FirstChild;
|
|
||||||
while childNode <> nil do begin
|
|
||||||
nodeName := childNode.NodeName;
|
|
||||||
if nodeName = 'bgColor' then
|
|
||||||
bgColor := ReadColor(childNode)
|
|
||||||
else
|
|
||||||
if nodeName ='fgColor' then
|
|
||||||
fgColor := ReadColor(childNode);
|
|
||||||
childNode := childNode.NextSibling;
|
|
||||||
end;
|
|
||||||
}
|
|
||||||
end else
|
end else
|
||||||
if nodeName = 'numFmt' then
|
if nodeName = 'numFmt' then
|
||||||
begin
|
begin
|
||||||
@ -2233,12 +2221,14 @@ begin
|
|||||||
dxf.FontColor := fontColor;
|
dxf.FontColor := fontColor;
|
||||||
dxf.FontStyles := fontStyles;
|
dxf.FontStyles := fontStyles;
|
||||||
fmt.FontIndex := TsWorkbook(FWorkbook).AddFont('', -1, fontStyles, fontColor);
|
fmt.FontIndex := TsWorkbook(FWorkbook).AddFont('', -1, fontStyles, fontColor);
|
||||||
|
// Excel does not allow to change font name and font size.
|
||||||
end else
|
end else
|
||||||
if (uffNumberFormat in uff) then
|
if (uffNumberFormat in uff) then
|
||||||
begin
|
begin
|
||||||
dxf.NumFormatStr := numFmtStr;
|
|
||||||
fmt.NumberFormatStr := numFmtStr;
|
|
||||||
fmt.NumberFormatIndex := TsWorkbook(FWorkbook).AddNumberFormat(numFmtStr);
|
fmt.NumberFormatIndex := TsWorkbook(FWorkbook).AddNumberFormat(numFmtStr);
|
||||||
|
numFmtParams := TsWorkbook(FWorkbook).GetNumberFormat(fmt.NumberFormatIndex);
|
||||||
|
fmt.NumberFormatStr := numFmtParams.NumFormatStr;
|
||||||
|
fmt.NumberFormat := numFmtParams.NumFormat;
|
||||||
end;
|
end;
|
||||||
dxf.CellFormatIndex := TsWorkbook(FWorkbook).AddCellFormat(fmt);
|
dxf.CellFormatIndex := TsWorkbook(FWorkbook).AddCellFormat(fmt);
|
||||||
FDifferentialFormatList.Add(dxf);
|
FDifferentialFormatList.Add(dxf);
|
||||||
@ -6249,7 +6239,11 @@ procedure TsSpreadOOXMLWriter.WriteDifferentialFormat(AStream: TStream;
|
|||||||
|
|
||||||
var
|
var
|
||||||
pt, bc, fc, diag: string;
|
pt, bc, fc, diag: string;
|
||||||
font: TsFont;
|
// font: TsFont;
|
||||||
|
nfp: TsNumFormatParams;
|
||||||
|
nfs: String;
|
||||||
|
nfi: Integer;
|
||||||
|
nfId: String;
|
||||||
begin
|
begin
|
||||||
AppendToStream(AStream,
|
AppendToStream(AStream,
|
||||||
'<dxf>');
|
'<dxf>');
|
||||||
@ -6278,6 +6272,17 @@ begin
|
|||||||
}
|
}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{ number format }
|
||||||
|
if (uffNumberFormat in AFormat^.UsedFormattingFields) then
|
||||||
|
begin
|
||||||
|
nfp := TsWorkbook(FWorkbook).GetNumberFormat(AFormat^.NumberFormatIndex);
|
||||||
|
// nfs := UTF8TextToXMLText(nfp.NumFormatStr);
|
||||||
|
nfs := nfp.NumFormatStr;
|
||||||
|
nfi := FNumFormatList.IndexOf(nfs);
|
||||||
|
if nfi > -1 then nfId := Format('numFmtId="%d" ', [nfi]) else nfId := '';
|
||||||
|
AppendToStream(AStream, Format('<numFmt %sformatCode="%s" />', [nfId, nfs]));
|
||||||
|
end;
|
||||||
|
|
||||||
{ background fill }
|
{ background fill }
|
||||||
if (uffBackground in AFormat^.UsedFormattingFields) then
|
if (uffBackground in AFormat^.UsedFormattingFields) then
|
||||||
begin
|
begin
|
||||||
|
Loading…
Reference in New Issue
Block a user