在 OpenOffice 电子表格文件上写入多个工作表

Posted

技术标签:

【中文标题】在 OpenOffice 电子表格文件上写入多个工作表【英文标题】:Write multiple sheet on OpenOffice spreadsheet file 【发布时间】:2012-03-02 10:15:34 【问题描述】:

我正在尝试解决如何编写 php 以在 OpenOffice 电子表格文件 (AKA ods) 上执行包含多张工作表的报告。现在我使用此代码生成 OpenOffice 电子表格报告,但它只能显示一张表:

<?php
// Export Calc SpreadSheet
header("Content-Type: application/vnd.ms-excel");
header('Content-Disposition: attachment; filename="Report.ods"');
?>

我该如何解决这个问题?

【问题讨论】:

您实际上是如何构建 ods 文件的?还是您只是简单地生成 html 标记并假设 PHP 自动将其转换为 ods 格式文件? 我创建了用于将一些参数发送到自动生成 ods 文件的 PHP 的表单。现在这可以在一个 ods 文件中每次只生成一张纸,但我的意思是每次在一个 ods 文件中生成多张纸。我该怎么做? 好的!根据您的回答猜测,您假设 ods 文件是通过 HTML 标记的魔法创建的。您确实需要开始查看可以编写“真实” ods 文件的库,而不是简单地设置标题并相信 Calc 的慷慨,它可以读取 HTML 和 ods,并且不要抱怨您试图欺骗它。我不知道有任何 ods 库,但是可以接受 Excel 库吗? - ***.com/questions/3269345/… 【参考方案1】:

有许多库可以在 PHP 中用于创建、编辑和提供电子表格文件或工作簿(它们是工作表的集合......实际上电子表格文件是一个工作簿,即使它只是一张纸)。有非常知名的,也有一些不太知名的。

大多数人会指向这些:

PHPExcel - https://phpexcel.codeplex.com/ 电子表格_Excel_Writer - http://pear.php.net/manual/en/package.fileformats.spreadsheet-excel-writer.intro.php ods-php - http://sourceforge.net/projects/ods-php/ openTBS - http://www.tinybutstrong.com/plugins/opentbs/tbs_plugin_opentbs.html

对于类似这样的问题还有更多答案,但库和选项数量之多令人望而生畏。

我个人对 PHP 中简单、小型、openDocument 格式编辑器的选择是 ods-php,它是您在应用程序中包含并实例化的单个 php 文件。我的用途不是创建 ODS 文档,而是编辑模板文件并提供编辑后的文档。您必须编写自己的标头并在您自己的 PHP 应用程序函数中回显文件内容,但这一点也不难。

ods-php 下载中包含一个 [非常] 基本的示例 php 文件,其中显示了一些功能,但如果您能够遵循基本的 PHP 逻辑,则可以查看库源并找出其可用功能。我会说它可以满足您的需要。

另一方面,如果您希望拥有更大的 API 供您使用,并且您的服务器足够好来处理它,我会推荐其他三个中的任何一个。请记住,相比之下,其他三个都相当大,并且每个都有自己的优点和缺点:

PHPExcel 可能是免费社区使用最多的,并且经常在 github 上维护(最后一次搞砸是 6 天前),但相当大。 github 站点上提供了文档(我提供了他们的旧链接,该链接指向他们的 github)。

Spreadsheet_Excel_Writer 是 Pear 的工具,虽然不再维护,但也一样大,所以“原样”是什么。 Pear 团队正在寻找人来接管其维护工作,但据我所知,有什么可以工作的。

openTBS 是 TBS 引擎 (TinyButStrong) 的单个类库扩展。您必须安装 TBS 才能使用 openTBS,启用 zlib 来压缩文件是一个非常好的主意。如果您使用 openTBS,您不仅可以制作基于 xml 的文档,还可以使用整个 TBS 引擎的功能,如果您想将 html 源模板与您的 php 脚本合并,这非常好(看看这个网站,它可能会为你开辟一些新的领域)。

肯定有更多的库和工具,但这些是我在搜索中发现的最值得注意的。我的选择是由保持我的服务器小型和独立的驱动力指导的(它在树莓派上运行)。如果我要选择一个庞大的生产环境 API,我可能会选择 PHPExcel,因为它具有与 M$ 不断适应的格式保持同步所需的支持。

【讨论】:

以上是关于在 OpenOffice 电子表格文件上写入多个工作表的主要内容,如果未能解决你的问题,请参考以下文章

连接 OpenOffice Calc/电子表格文件

如何从命令行对 OpenOffice/LibreOffice 电子表格运行 sql 查询?

如何从 Android 应用程序中读取 OpenOffice 文档电子表格?

怎么可能没有。以编程方式获取 OpenOffice.org 电子表格中的页数?

将 mySQL 表导出到 OpenOffice 电子表格

如何从 Perl 创建或读取 OpenOffice 电子表格?