实现fpSpreadsheet Lazarus

我需要从一些表中导出一些数据到excel文件。 事情是,唯一的工作扩展是'.xls',这太旧了。 所以,当我打开这个文件,它显示在受保护的展示模式,即使我取消选中Excel保护的展现模式选项中的所有框。

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

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

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

这是我用来保存的一个:

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

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

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

我不知道你的variables或常量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扩展名并保存正确的格式。

您需要在您的使用子句中包含xlsxooxml,因为该单元会自动注册xlsx格式。