我需要将一些数据从几个表导出到一个excel文件中。问题是,惟一的工作扩展是‘..xls’,它太老了。因此,当我打开这个文件时,它会显示在受保护的状态下,即使我取消选中Excel受保护的exibition模式选项中的所有框。
我不知道为什么不能保存在其他扩展中,比如.xlsx,因为如果我使用本机函数保存为.xlsx:STR_OOXML_EXCEL_EXTENSION或只编写.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可以帮上忙。
设置:运行在7 64位上的FPC2.6.4和fpSpreadsheet 1.6.0的Lazarus1.4.2。
发布于 2015-08-18 20:40:02
我不知道您的变量或常量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格式(自动)。
https://stackoverflow.com/questions/32074433
复制相似问题