使用PHP生成OpenOffice calc文件

时间:2014-01-22 16:59:20

标签: php dynamically-generated openoffice-calc ods

我一直试图找到一种创建OpenOffice calc文件的简单方法,但没有成功。

我试过了:

openTBS - 似乎可以编写xml和模板文件但无法找到有关xml文件格式的方法。

Ods php generator - 我尝试了这个,因为它提供了明确的示例,但是当我将文件复制到我的服务器时,我总是会收到损坏的文件

Php doc writer - 尝试了一个例子,得到了一个sxw文件。我甚至都不知道那是什么

ODS-PHP - 没有文档,只有一个创建4个单元格的例子

一切看起来都陈旧,停滞不前,没有记录。 ¿有什么建议吗?

2 个答案:

答案 0 :(得分:1)

我成功使用了opentbs。

您可以生成excel和calc文件。你也可以“重用”你的html实现,这也很好。

也许这个帖子可以让你去http://www.tinybutstrong.com/forum.php?thr=3069

首先执行html版本..然后编辑calc / excel

答案 1 :(得分:0)

Spout from Box对我来说足够好。有一些缺失的功能,但是使用起来简单,API流畅并且没有依赖关系(它支持composer,但您可以独立使用它,并且依赖关系图的深度为depth)。

这是我使用Spout的“对象到ODS的对象数组”管道: (我没有使用他们推荐的use导入,因为所有这些代码都适合一个我不想污染的更大文件,并且无论如何$factory模式对我来说看起来都更干净)

$factory = 'Box\Spout\Writer\Common\Creator\WriterEntityFactory';
$factory::createODSWriter()
    ->openToBrowser('filename.ods')
    ->addRow($factory::createRow([
        $factory::createCell(__('Heading 1')),
        $factory::createCell(__('Heading 2')),
        $factory::createCell(__('Heading 3')),
    ]))
    ->addRows(array_map(function($row) use ($factory) { 
        return $factory::createRow([
            $factory::createCell($row->first_val),
            $factory::createCell($row->second_val),
            $factory::createCell($row->third_val),
        ]);
    }, loadDataFromSomewhere()))
    ->close();