program project1;
{$mode objfpc}{$H+}
uses
fpspreadsheet, fpstypes, fpsopendocument;
var OdsFName: String;
book: TsWorkbook;
Sheet: TsWorkSheet;
CellP: PCell;
begin
OdsFName:= 'RoundDemo.ods';
book := TsWorkbook.Create;
try
book.Options:= book.Options + [boIgnoreFormulas,boReadFormulas];
Sheet := book.AddWorksheet('Sheet');
Sheet.WriteNumber(0, 0, 3.141592);
// *** List separator SEMICOLON ***
// ods syntax for formula
Sheet.WriteFormula(0, 1, 'of:=ROUND([.A1]/(1+0.21)*0.21;2)'); // exactly like in file
Sheet.WriteFormula(0, 2, 'of:=ROUND(A1/(1+0.21)*0.21;2)');
// Excel syntax for formula
Sheet.WriteFormula(0, 3, '=ROUND([.A1]/(1+0.21)*0.21;2)');
Sheet.WriteFormula(0, 4, '=ROUND(A1/(1+0.21)*0.21;2)');
// fpspreadsheet syntax for formula
Sheet.WriteFormula(0, 5, 'ROUND([.A1]/(1+0.21)*0.21;2)');
Sheet.WriteFormula(0, 6, 'ROUND(A1/(1+0.21)*0.21;2)');
// **** List separator COMMA ***
// ods syntax for formula
Sheet.WriteFormula(1, 1, 'of:=ROUND([.A1]/(1+0.21)*0.21,2)');
Sheet.WriteFormula(1, 2, 'of:=ROUND(A1/(1+0.21)*0.21,2)');
// Excel syntax for formula
Sheet.WriteFormula(1, 3, '=ROUND([.A1]/(1+0.21)*0.21,2)');
Sheet.WriteFormula(1, 4, '=ROUND(A1/(1+0.21)*0.21,2)');
// fpspreadsheet syntax for formula
Sheet.WriteFormula(1, 5, 'ROUND([.A1]/(1+0.21)*0.21,2)');
Sheet.WriteFormula(1, 6, 'ROUND(A1/(1+0.21)*0.21,2)');
book.WriteToFile(OdsFName,sfOpenDocument,TRUE);
finally
book.Free;
end;
end.