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:
wp_xxyyzz
2014-06-16 16:32:39 +00:00
parent af326242a5
commit 4f9993b4b0
2 changed files with 43 additions and 2 deletions

View File

@ -181,6 +181,16 @@ begin
MyWorksheet.WriteNumber(row, 6, number6, nfExp, 3);
MyWorksheet.WriteNumber(row, 7, number7, 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
MyWorksheet := MyWorkbook.AddWorksheet('My Worksheet 2');

View File

@ -332,6 +332,7 @@ var
sStyleMap: String;
ns: Integer;
clr: TsColorvalue;
el: Integer;
begin
Result := '';
sGrouping := '';
@ -401,7 +402,7 @@ begin
end;
// nfExp
if IsTokenAt(nftExpChar, ASection, next) then begin
if (nf = nfFixed) and IsTokenAt(nftExpChar, ASection, next) then begin
if (next + 2 < Length(Elements)) and
IsTokenAt(nftExpSign, ASection, next+1) and
IsTokenAt(nftExpDigits, ASection, next+2)
@ -425,9 +426,39 @@ begin
exit;
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...
end;
end;
{ TsSpreadOpenDocReader }