chervand/yii-excel

该包最新版本(dev-master)没有提供许可信息。

支持数据提供者和模型的Yii框架PHPExcel包装器

安装: 56

依赖者: 0

建议者: 0

安全: 0

星星: 0

关注者: 2

分支: 0

开放问题: 0

类型:yii-extension

dev-master 2016-04-14 14:47 UTC

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目录。