如何在lazarus FPSpreadsheet中格式化单元格公式?



我在使用FPSpreadsheet的Lazarus中遇到了一个问题,我无法定义单元格的格式。例如:内联格式,

Value := 1500.60
MySheet.WriteNumber(0,1,Value, nfFixedTh,2);

我在A2, 1,500.60中有这个结果,但是当我定义一个公式时,我无法得到这个格式。

ex: A2 = 1500.60

MySheet.WriteFormula(0,4,'=SUM(A2:A3)');

结果是1760.6,如何格式化结果单元格,使其看起来像1760.60在excel中,这样做:

MySheet.Range[A2,A3].NumberFormat := '###,##0.00';

但是我不能用FPSpreadsheet做同样的事情谢谢


我试过了:

A2 = 1500.6
A3 = 260.00
MySheet.WriteFormula(0,4,'=SUM(A2:A3)');
MyCell := MySheet.GetCell(0,4);
MyCel^.NumberFormat := nfFixedTh;

结果是1760.6,如何格式化结果单元格,使其看起来像1760.60。我还反转了调用

MyCell := MySheet.GetCell(0,4); 
MyCel^.NumberFormat := nfFixedTh;

在写公式

之前

TsWorksheet有很多格式化方法。阅读汤姆提到的那篇维基文章。

在您的示例中,为了格式化一个数字单元格,您应该调用WriteNumberFormat方法之一,如下面的示例所示。顺便说一句,在单元格接收到它的值之前还是之后应用该格式都没有关系。

program Project1;
uses
fpsTypes, fpspreadsheet, xlsxOOXML;
var
workbook: TsWorkbook;
sheet: TsWorksheet;
begin
workbook := TsWorkbook.Create;
try
sheet := workbook.AddWorksheet('Test');
sheet.WriteNumber(1, 0, 1500.6);
sheet.WriteNumber(2, 0, 260.0);
sheet.WriteNumberFormat(4, 0, nfFixedTh, 2);
sheet.WriteFormula(4, 0, 'Sum(A2:A3)');
workbook.WriteToFile('test.xlsx', true);
finally
workbook.Free;
end;
end.

最新更新