nkostadinov / yii-eexcelview
Yii 扩展,提供 CGridView 替换,并支持导出到不同类型。
Requires
- php: >=5.3
- phpoffice/phpspreadsheet: ~1.8.0
- yiisoft/yii: ~1.1
This package is auto-updated.
Last update: 2024-08-29 05:24:46 UTC
README
这是 PHPSpreadsheet 的包装器,从 CGridView 扩展而来。主要思想是轻松地将已定义的网格导出到 Excel 文件。您可以使用与网格相同的参数数组,以及额外的特定参数,这些参数是:
用法
用法类似于使用 CGridView
$this->widget('EExcelView', array( 'dataProvider'=> $dataprovider, 'title' => 'Title', 'autoWidth' => false, 'template' => "{summary}\n{items}\n{exportbuttons}\n{pager}", ... other options ... ));
如果您没有在导入数组中放置扩展(以下安装步骤 4),那么您需要在 widget 调用上方添加以下内容
Yii::import('ext.EExcelView');
您可以传递的选项
文档属性
- creator - 文档的创建者
- title - Excel 文档的标题
- subject, description, category
其他参数
- exportType - 要导出的文件类型 - 默认为 xls。这些是 PHPSpreadsheet 编写器类型:Xls, Xlsx, Ods, Csv, Html, Tcpdf, Dompdf, Mpdf。也可以作为 GET 变量传递
- autoWidth - 是否自动扩展单元格以适应内容(默认 true)
- disablePaging - 如果设置为 true,则将导出所有数据(默认 true)
- filename - 要导出的文件名完整路径。如果为 null,则将流式传输到浏览器
- stream - true/false 将流式传输到浏览器或保存到文件。
- grid_mode - 是否显示网格或将其导出到所选格式。可能的值(grid, export)
- grid_mode_var - 默认为 'grid_mode' GET 变量用于网格模式
- sheetTitle - 当前工作表的标题。默认为 Sheet1
- rtl_sheet - 是否将工作表设置为从右向左
要求
Yii 1.1, Composer。
安装
步骤 1 - 创建/更新您的 composer.json 文件
运行 composer require nkostadinov/yii-eexcelview
或
在 protected/ 目录内创建或更新您的 composer.json。在那里,将以下行添加到 composer.json 的 require 部分
"require": {
...
"phpoffice/phpspreadsheet": ">= 1.10.1"
...
},
然后运行 composer update。
### 步骤 2 - 添加 composer 的自动加载器(如果您尚未这样做)
在您的入口点(项目的根目录中的 index.php)中,在 require_once 'Yii framework' 之前添加
// Autoload including composer
require_once(__DIR__ . '/protected/vendor/autoload.php');
步骤 3 - 下载并安装此扩展
下载此扩展并将其放入 extensions/EExcelView 文件夹。
步骤 4.(可选)将配置文件路径添加到
在您的配置文件导入部分添加以下内容
[php]
// autoloading model and component classes
'import'=>array(
.............
'ext.EExcelView.*',
),
发行说明
ver 0.4
- 迁移到使用 PHPSpreadsheet 而不是 PHPExcel
- 迁移到使用 composer
ver 0.32
- 修复了 CButtonColumn 错误 "属性 "CButtonColumn"."name" 未定义"...
- 修复了多级缓冲问题(le top)
- 修复了导出按钮列错误(le top)
- 在扩展页面中添加了所有属性的文档。
ver 0.31
主要是一个错误修复版本。我还修改了扩展,使其能够在控制台模式下运行(尽管它是一个 widget)。我真正需要能够发送 xls 报告的东西。以下是一个代码片段
[php]
$factory = new CWidgetFactory();
$widget = $factory->createWidget($this, 'EExcelView', array(
'dataProvider'=>$provider,
'grid_mode'=>'export',
'title'=>'Title',
'filename'=>'report.xlsx',
'stream'=>false,
'exportType'=>'Excel2007',
'columns'=>array(
'col1',
'col2',
),
));
$widget->init();
$widget->run();
ver 0.3
主要变更:EExceView 现在可以完全替代 CGridView。存在一个可选参数 'gridmode'(默认为 "grid"),当未设置时,其行为就像正常的网格。如果 gridmode="export",则将所选的网格以 "exportType"(默认为 "Excel5")导出。现在可以通过 "libPath" 变量自定义 PHPExcel 的路径。如果找不到库,将生成警告并禁用导出。
- 新增:"gridmode" 的可能值(grid, export)。当设置为 grid 时,类似于正常网格。
- 新增:"libPath" 属性,默认为 "application.extensions.phpexcel.Classes.PHPExcel"。PHP Excel 库的位置。
- 新增:"grid_mode_var" GET 变量名,可用于更改网格模式。默认为 "grid_mode"。
- 新增:新的模板项目 "exportbuttons",用于渲染导出链接。示例:...'template'=>"{summary}\n{items}\n{exportbuttons}\n{pager}"....
- 新增:导出按钮的配置。"exportButtonsCSS"(默认为 "summary")是包裹按钮的 div 的 CSS 类。 "exportButtons" - 导出类型数组,对于每个项目,它渲染一个导出网格的链接。如果您指定了一个数组,您可以自定义链接的标题。所有导出类型都有默认标题。示例:array('Excel5'=>array('caption'=>'*.xls'), PDF)。属性 exportText 定义链接前的文本,默认 = "导出到:"。
- 新增:渲染 CLinkColumns。只是链接的文本。
- 新增:支持页脚,类似于正常页脚。
- 新增:在单元格处理完毕后调用回调函数。$cell 是 PHP Excel 单元格对象。有关帮助,请参阅 PHP Excel 文档。$data 是网格用于表达式的相同变量。$value 是扩展放入单元格的文本。
- onRenderHeaderCell(PHPExcel_Cell $cell, string $value)
- onRenderDataCell(PHPExcel_Cell $cell, $data, string $value)
- onRenderFooterCell(PHPExcel_Cell $cell, string $value)
感谢所有给我写信提出如何扩展此扩展的想法的人。抱歉,我最近真的很忙,所以没有时间早点带来这个。我已经测试了这个扩展,但如果您发现任何错误或想让我添加的功能,请随时写信。快乐的一周:)
版本 0.2
- 修复:保存到文件名时出错。
- 修复:当索引 > 26 时的列索引错误。
- 新增:支持 CSV。
- 新增:新的参数 "stream"(默认为 true),当设置为 true 时,将数据流到浏览器,否则保存到本地文件名。
- 新增:获取真实列标题。
- 新增:当未指定时,从页面标题获取标题。