vishwayon/phpstep

PHP电子表格模板引擎

v0.2 2020-07-20 15:00 UTC

This package is not auto-updated.

Last update: 2024-10-02 09:24:35 UTC


README

PHP电子表格模板引擎

感谢PHPOffice/PhpSpreadsheet,我们能够直接从PHP生成各种类型的电子表格。PhpStep试图通过模板标签来自动化数据填充的电子表格。

在这个项目中,我们结合了一个现有的包含一些模板属性和结构化模型或JSON数据的xslx文件,以输出一个用户可读的、可直接使用的电子表格。

何时使用PhpStep?

当你需要从PHP模型对象生成电子表格作为输出时,PhpStep非常有用。通常,你会编写代码来访问模型对象中的数据,并使用像PHPOffice/PhpSpreadsheet这样的包来渲染输出。电子表格报告可能由分析师设计以满足业务需求,而这个需求需要开发者进行编码并通过QA流程。PhpStep可以消除将需求推送到SDLC周期中的过程,并使具有最少编码技能的人能够生成这些报告。

何时使用StepService.php?

你可以在任何Web服务器上发布StepService.php,并通过带有JSON数据、模板电子表格和输出文件名的页面调用它。它将在独立进程中渲染输出文件。有关请求参数,请参阅StepService.php的文档。

依赖关系

安装和使用

composer require vishwayon/phpstep "^0.1"

或者,使用git仓库。

支持的模板标签

  • $F{字段名} - 类/数据源中的字段/属性
  • $Each{迭代器} - 实现Iterator接口的任何集合对象/数组

示例代码

首先,创建一个具有以下结构的sample.xlsx文件

你可以应用各种格式到单元格中,也可以创建常规公式。

require '../vendor/autoload.php';

$model = new \stdClass();
$model->message = 'Hello World!';
$model->stats = [
    ['country' => 'India', 'population' => 1300]
    ['country' => 'USA', 'population' => 330,
    ['country' => 'Russia', 'population' => 145
];

$reader = PhpOffice\PhpSpreadsheet\IOFactory::createReader('Xlsx');
$ss = $reader->load("sample.xlsx");
$worksheet = $ss->getActiveSheet();

$re = new PhpStep\RenderWorksheet();
$re->applyData($worksheet, $model);

$writer = PhpOffice\PhpSpreadsheet\IOFactory::createWriter($ss, 'Xlsx');
$writer->save('sampleResult.xlsx');

对于复杂的方法,请参阅test/TestRenderWorksheet.php和testData.xlsx

限制

  • 工作表中的绝对公式(例如:$D$13)将不起作用。渲染后它们将引用错误的单元格

许可证

PhpStep遵循MIT许可证。