You've already forked lazarus-ccr
fpspreadsheet: Add workaround for number format nfSci which is not supported by Open/LibreOffice
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3178 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -181,6 +181,16 @@ begin
|
|||||||
MyWorksheet.WriteNumber(row, 6, number6, nfExp, 3);
|
MyWorksheet.WriteNumber(row, 6, number6, nfExp, 3);
|
||||||
MyWorksheet.WriteNumber(row, 7, number7, nfExp, 3);
|
MyWorksheet.WriteNumber(row, 7, number7, nfExp, 3);
|
||||||
MyWorksheet.WriteNumber(row, 8, number8, nfExp, 3);
|
MyWorksheet.WriteNumber(row, 8, number8, nfExp, 3);
|
||||||
|
inc(row);
|
||||||
|
MyWorksheet.WriteUTF8Text(row, 0, 'nfSci, 2 decimals');
|
||||||
|
MyWorksheet.WriteNumber(row, 1, number1, nfSci, 2);
|
||||||
|
MyWorksheet.WriteNumber(row, 2, number2, nfSci, 2);
|
||||||
|
MyWorksheet.WriteNumber(row, 3, number3, nfSci, 2);
|
||||||
|
MyWorksheet.WriteNumber(row, 4, number4, nfSci, 2);
|
||||||
|
MyWorksheet.WriteNumber(row, 5, number5, nfSci, 2);
|
||||||
|
MyWorksheet.WriteNumber(row, 6, number6, nfSci, 2);
|
||||||
|
MyWorksheet.WriteNumber(row, 7, number7, nfSci, 2);
|
||||||
|
MyWorksheet.WriteNumber(row, 8, number8, nfSci, 2);
|
||||||
|
|
||||||
// Creates a new worksheet
|
// Creates a new worksheet
|
||||||
MyWorksheet := MyWorkbook.AddWorksheet('My Worksheet 2');
|
MyWorksheet := MyWorkbook.AddWorksheet('My Worksheet 2');
|
||||||
|
@ -332,6 +332,7 @@ var
|
|||||||
sStyleMap: String;
|
sStyleMap: String;
|
||||||
ns: Integer;
|
ns: Integer;
|
||||||
clr: TsColorvalue;
|
clr: TsColorvalue;
|
||||||
|
el: Integer;
|
||||||
begin
|
begin
|
||||||
Result := '';
|
Result := '';
|
||||||
sGrouping := '';
|
sGrouping := '';
|
||||||
@ -401,7 +402,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
// nfExp
|
// nfExp
|
||||||
if IsTokenAt(nftExpChar, ASection, next) then begin
|
if (nf = nfFixed) and IsTokenAt(nftExpChar, ASection, next) then begin
|
||||||
if (next + 2 < Length(Elements)) and
|
if (next + 2 < Length(Elements)) and
|
||||||
IsTokenAt(nftExpSign, ASection, next+1) and
|
IsTokenAt(nftExpSign, ASection, next+1) and
|
||||||
IsTokenAt(nftExpDigits, ASection, next+2)
|
IsTokenAt(nftExpDigits, ASection, next+2)
|
||||||
@ -425,9 +426,39 @@ begin
|
|||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
|
||||||
|
// nfSci: not supported by ods, use nfExp instead.
|
||||||
|
el := 0;
|
||||||
|
decs := 0;
|
||||||
|
while el < Length(Elements) do begin
|
||||||
|
case Elements[el].Token of
|
||||||
|
nftDecs:
|
||||||
|
decs := Elements[el].IntValue;
|
||||||
|
nftExpChar:
|
||||||
|
begin
|
||||||
|
while el < Length(Elements) do begin
|
||||||
|
if Elements[el].Token = nftExpDigits then begin
|
||||||
|
expdig := Elements[el].IntValue;
|
||||||
|
Result := AIndent +
|
||||||
|
'<number:number-style style:name="' + AFormatName + '">' + LineEnding +
|
||||||
|
sColor + AIndent +
|
||||||
|
' <number:scientific-number number:decimal-places="' + IntToStr(decs) +'" '+
|
||||||
|
'number:min-integer-digits="1" '+
|
||||||
|
'number:min-exponent-digits="' + IntToStr(expdig) +'" />' +
|
||||||
|
sStylemap + AIndent +
|
||||||
|
'</number:number-style>';
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
inc(el);
|
||||||
|
end;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
inc(el);
|
||||||
|
end;
|
||||||
|
|
||||||
// ... more to follow...
|
// ... more to follow...
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TsSpreadOpenDocReader }
|
{ TsSpreadOpenDocReader }
|
||||||
|
Reference in New Issue
Block a user