ciniran 2018-09-15 17:22:59 6979次浏览 3条评论 10 1 0

yii2 excel 导入,导出扩展,
本扩展基于phpexcel的升级版本 phpspreadsheet.
主要有以下功能:

导出

  • 基于activeDataPrivoder生成Excel
  • 基于ActiveRecrod生成Excel

    - 基于二维数组生成 Excel

  • 模型中定义show(),可对输出值进行转换
  • 指定导出字段
  • 支持导出model的关联数据
  • 自定义输出版本

    导入

  • 直接生成ActiveRecrod的模型
  • 按表头生成数组
  • 指定表头位置
  • 可按模型attribute导入
  • 按attributeLabel中文导入

安装

您可以通过 composer 安装.

本项目在github的地址是http://github.com/ciniran/yii2-excel

运行

php composer.phar require --prefer-dist ciniran/yii2-excel "*"

or add

"ciniran/yii2-excel": "*"

to the require section of your composer.json file.

用法

下面是一些简单示例:

DataPrivoder to excel:

      $dataPrivoder = new ActiveDataProvider([
            'query' => User::find(),
        ]);
        $excel = new SaveExcel([
            'dataProvider' => $dataPrivoder,
          //'show' => true,  //是否对值进行转换
            'fields' => 'email,username', //or ['email,username'] 限制导出的列
            'format' => SaveExcel::XLXS, 输出版本
            'all' => true,  //导出全部数据
            'relation' => false, //模型关系数据
        ]);
        $excel->dataProviderToExcel();

ActiveRecord to excel:

        $models = User::find()->all();
        $excel = new SaveExcel([
            'models' => $models,
            // 'show' => true,
        ]);
        $excel->modelsToExcel();

Array to excel

     $array = [
            [
                'name'=>'tom',
                'age'=>18,
            ],
            [
                'name'=>'jerry',
                'age'=>19,
            ],
        ];
        $excel = new SaveExcel([
            'array' => $array,
            'headerDataArray' => ['name', 'age'],
        ]);
        $excel->arrayToExcel();

Read excel file to array

       $path = 'user.xlsx';
        $excel = new ReadExcel([
            'path' => $path,
            'head' => true,
            'headLine' => 1,
        ]);
        $data = $excel->getArray();

Read excel file to models

        $path = 'user.xlsx';
        $excel = new ReadExcel([
            'path' => $path,
            'head' => true,
            'headLine' => 1,
            'class' => 'common\\models\\User',
            'useLabel' => true,
        ]);
        $models = $excel->getModels();
觉得很赞
  • 评论于 2019-02-10 21:02 举报

    关于Array to excel这个示例中,建议在:$excel = new SaveExcel([

            'array' => $array,
            'headerDataArray' => ['name', 'age'],
        ]);
        $excel->arrayToExcel();
    

    中,headerDataArray这个数组中设置成:['name'=>'姓名', 'age'=>'年龄'],然后在列头上显示中文,而不是英文,这样的话,方便导出的列显示为中文汉字哈

  • 评论于 2019-03-22 10:01 举报

    果断收藏 加星

  • 评论于 2019-04-09 14:48 举报
您需要登录后才可以评论。登录 | 立即注册