实施 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 格式。
我需要将几个表中的一些数据导出到 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 格式。