实施 fpSpreadsheet Lazarus

Implementing fpSpreadsheet Lazarus

我需要将几个表中的一些数据导出到 excel 文件中。问题是,唯一可用的扩展名是“.xls”,它太旧了。因此,当我打开此文件时,即使我取消选中 Excel 受保护的展览模式选项中的所有框,它也会以受保护的展览模式显示。

我不确定为什么我不能保存在其他扩展中,比如 .xlsx,因为如果我使用本机函数保存为 .xlsx: STR_OOXML_EXCEL_EXTENSION 或者只是write .xlsx 它保存,但不打开文档。 显示此消息:Excel 无法打开文件 'file.xlsx' 因为格式或扩展名无效。检查文档是否损坏或扩展名是否与文件格式匹配。

这是我用来创建文件的代码:

   MyWorkbook := TsWorkbook.Create;
      try
        MyWorksheet := MyWorkbook.AddWorksheet('Orçamento'); 

这是我用来保存的:

     MyWorkbook.WriteToFile(MyDir + orcamento + '.xls', OUTPUT_FORMAT, True);
 finally
    MyWorkbook.Free; 

我能想到的唯一选择是使用另一个包,Excel 或 OpenOffice 可以提供帮助。

设置: Lazarus 1.4.2,FPC 2.6.4 和 fpSpreadsheet 1.6.0,运行 Windows 7 64 位。

我不确定你的变量或常量 OUTPUT_FORMAT 包含什么,但如果你指定格式,它应该是以下格式之一:

sfExcel2, sfExcel5, sfExcel8, sfOOXML, sfOpenDocument,
sfCSV, sfHTML, sfWikiTable_Pipes, sfWikiTable_WikiMedia

因此,如果您想另存为 .xlsx,您可以这样做(使用 sfOOXML 作为格式):

uses fpspreadsheet, fpstypes, xlsxooxml;
//...
MyWorkbook.WriteToFile(MyDir + orcamento + '.xlsx', sfOOXML, True);

您也可以这样做:

uses fpspreadsheet, fpstypes, xlsxooxml;
//...
MyWorkbook.WriteToFile(MyDir + orcamento + '.xlsx', True);

它会自动检测 .xlsx 扩展名并保存正确的格式。

您确实需要在 uses 子句中包含 xlsxooxml,因为该单元会(自动)注册 xlsx 格式。