0

我正在尝试使用 PHP 处理 .ods 文件。该文件基本上如下所示:

[空单元格] | 标题1 | 标题2 | 标题3
18.12.2012 | 2.5 | 9.4 | 0.1
19.12.2012 | 4.5 | 1.23| 0.2
2012 年 12 月 20 日 | 12.4 | 21.1| 0.8
21.12.2012 | 0.5 | 11.0| 0.6

我需要的是读取数字,获取行和列的总和,并根据我从该文件中获得的信息生成 .odt 文件。多个stackoverflow和其他线程表明OpenTBS对于这个目的来说真的足够了,但我对模板引擎概念有点陌生,对PHP本身有点陌生,所以我已经阅读了几天的文档,我唯一的事情似乎理解的是如何基于模板合并和生成文档。但是我可以从加载到 OpenTBS 的模板或其他文件中读取数据并进行处理吗?例如,我想如果我可以读取数据,我可以使用 HTML 模板将其输出到浏览器中。如果不是太麻烦,我真的很想看到一些这样做的代码示例,谢谢。如果 OpenTBS 无法做到这一点,

4

1 回答 1

0

尽管数据阅读器在 OpenTBS 的路线图中,但当前版本 (1.9.5) 无法提取电子表格的数据。但它可以检索电子表格的 XML。

因此,您可以读取检索包含数据的电子表格的 XML,有一段代码用于提取数据,然后将数据与 ODS 模板合并。

// Initialize the TBS instance
$TBS = new clsTinyButStrong; // new instance of TBS
$TBS->Plugin(TBS_INSTALL, OPENTBS_PLUGIN); // load the OpenTBS plugin

// Retrieve xml from the source file
$TBS->LoadTemplate('data_to_extract.ods');
$xml = $TBS->Source;

// your code saving the data from $xml into $data
// ...

// Merge the data with the template
$TBS->LoadTemplate('template.ods');
$TBS->MergeBlock('d', $data);
$TBS->Show(OPENTBS_FILE, 'result.ods');

为了从 XML 中提取数据,您可以注意到单元格中的数值存储在单元格的属性office:value中。例子 :

      <table:table-cell office:value-type="float" office:value="2.4" calcext:value-type="float">
        <text:p>2.4000</text:p>
      </table:table-cell>

单元格中的日期值存储在单元格的属性office:date-value中。例子 :

      <table:table-cell office:value-type="date" office:date-value="2016-03-02" calcext:value-type="date">
        <text:p>02/03/16</text:p>
      </table:table-cell>
于 2016-02-26T00:21:11.267 回答