我在使用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.