chervand / yii-excel
该包最新版本(dev-master)没有提供许可信息。
支持数据提供者和模型的Yii框架PHPExcel包装器
dev-master
2016-04-14 14:47 UTC
Requires
- php: >=5.4.0
- phpoffice/phpexcel: 1.*
- yiisoft/yii: 1.*
Requires (Dev)
- codeception/codeception: *
- codeception/specify: *
- codeception/yii-bridge: dev-master
This package is not auto-updated.
Last update: 2024-09-11 23:18:49 UTC
README
它支持将IDataProvider对象、模型数组和原始数据数组导出为.xls、.xlsx、.html和.csv格式。
导出
用法
(new Excel) ->worksheet('Worksheet #1', [['col1', 'col2'], ['cell11', 'cell12'], ['cell21', 'cell22']], function (\PHPExcel_Worksheet $worksheet, array $data) { $worksheet->fromArray($data); } ) ->worksheet('Worksheet #2', new \CActiveDataProvider('User')) ->export('/tmp/', 'export.xlsx');
输出
export()
有两个可选参数
- 保存路径(无文件名),默认为
php://output
- 带有扩展名的文件名,默认为
Export_{timestamp}.csv
(new Excel) ->worksheet('Worksheet #1', new \CActiveDataProvider('User')) ->export('/tmp/', 'export.xlsx');
支持的格式
- BIFF 8 (
.xls
) Excel 95及以上版本 - Office Open XML (
.xlsx
) Excel 2007及以上版本 - HTML (
.html
) - CSV (
.csv
)
工作表
要向工作簿添加工作表,请使用带有参数的worksheet()
- 工作表标题,必需
- 要导出的数据,可以是CActiveDataProvider、CArrayDataProvider、模型数组或原始数据数组
- 用于自定义PHPExcel_Worksheet对象的回调函数(参见PHPExcel文档),params
- PHPExcel_Worksheet对象
- 传递给
worksheet()
的数据变量
完整示例
$arrayOfValues = [['col1', 'col2'], ['item11', 'item12'], ['item21', 'item22']]; $arrayOfModels = \CActiveRecord::model($this->modelClass)->findAll(); $isExported = (new \Excel) ->worksheet('Array of values', $arrayOfValues) ->worksheet('Array of values + callback', $arrayOfValues, function (\PHPExcel_Worksheet $worksheet, array $data) { $worksheet->fromArray($data); } ) ->worksheet('Array of models', $arrayOfModels) ->worksheet('Array of models + callback', $arrayOfModels, function (\PHPExcel_Worksheet $worksheet, array $data) { $_data = []; foreach ($data as $model) { if ($model instanceof \CActiveRecord) { $_data[] = $model->getAttributes(); } } $worksheet->fromArray($_data); } ) ->worksheet('CArrayDataProvider of raw data', new \CArrayDataProvider($arrayOfValues)) ->worksheet('CArrayDataProvider of models', new \CArrayDataProvider($arrayOfModels)) ->worksheet('CActiveDataProvider + callback', new \CActiveDataProvider($this->modelClass), function (\PHPExcel_Worksheet $worksheet, \CActiveDataProvider $dataProvider) { $_data[] = $dataProvider->model->attributeNames(); foreach ($dataProvider->getData() as $model) { if ($model instanceof \CActiveRecord) { $_data[] = $model->getAttributes(); } } $worksheet->fromArray($_data); } ) ->export('worksheets.xlsx', $this->savePath);
更多示例,请参阅tests
目录。