首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实现fpSpreadsheet Lazarus

实现fpSpreadsheet Lazarus
EN

Stack Overflow用户
提问于 2015-08-18 13:54:20
回答 1查看 2.6K关注 0票数 1

我需要将一些数据从几个表导出到一个excel文件中。问题是,惟一的工作扩展是‘..xls’,它太老了。因此,当我打开这个文件时,它会显示在受保护的状态下,即使我取消选中Excel受保护的exibition模式选项中的所有框。

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

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

代码语言:javascript
复制
   MyWorkbook := TsWorkbook.Create;
      try
        MyWorksheet := MyWorkbook.AddWorksheet('Orçamento'); 

这是我用来拯救的那个:

代码语言:javascript
复制
     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。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-18 20:40:02

我不知道您的变量或常量OUTPUT_FORMAT包含什么内容,但是如果您指定了一种格式,那么它应该是以下内容之一:

代码语言:javascript
复制
sfExcel2, sfExcel5, sfExcel8, sfOOXML, sfOpenDocument,
sfCSV, sfHTML, sfWikiTable_Pipes, sfWikiTable_WikiMedia

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

代码语言:javascript
复制
uses fpspreadsheet, fpstypes, xlsxooxml;
//...
MyWorkbook.WriteToFile(MyDir + orcamento + '.xlsx', sfOOXML, True);

你也可以这样做:

代码语言:javascript
复制
uses fpspreadsheet, fpstypes, xlsxooxml;
//...
MyWorkbook.WriteToFile(MyDir + orcamento + '.xlsx', True);

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32074433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档