欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

laravel实现excel导入导出

程序员文章站 2024-03-21 19:50:22
...

Laravel Excel官方文档: https://laravel-excel.maatwebsite.nl/

一、安装&配置

使用Composer安装依赖
首先在Laravel项目根目录下使用Composer安装依赖:

composer require maatwebsite/excel ~2.0.0
// 安装完成后在vendor\maatwebsite目录下会产生一个excel的文件,就表示安装完成了

安装后的设置:
在 config/app.php 中注册组件到 aliases 数组:
'Excel' => Maatwebsite\Excel\Facades\Excel::class,

二、导出Excel的方法

// 引入excel
use Excel;
use PHPExcel_Worksheet_Drawing;// 导出图片时需要的
/*导出普通数据表格*/
public function export(){
   ini_set('memory_limit','500M');
   set_time_limit(0);//设置超时限制为0分钟
   // 取出需要导出的数据列表
   $cellData = User::select('username','token','remark')->limit(5)->get()->toArray();
   // 设置导出的excel头信息 
   $cellData[0] = array('昵称','token','备注');
   //  把取出的数组遍历格式化
   // [
   //    [
   //     "昵称",
   //     "token",
   //     "备注",
   //    ],
   //    [
   //     "范迪塞尔",
   //     "",
   //     "范迪塞尔",
   //    ]
   // ]
   for($i=0;$i<count($cellData);$i++){
        $cellData[$i] = array_values($cellData[$i]);
        $cellData[$i][0] = str_replace('=',' '.'=',$cellData[$i][0]);
   }
  // 创建导出excel 表格
   Excel::create('用户信息',function($excel) use ($cellData){
      // 创建其中一个sheet  需要导出的数据集合$cellData
      $excel->sheet('score', function($sheet) use ($cellData){
           $sheet->rows($cellData);
      });
      //  第二个sheet  需要导出的数据集合$cellData
      $excel->sheet('score', function($sheet) use ($cellData){
           $sheet->rows($cellData);
      });
      })->export('xls');
}
/*导出带图片的数据表格*/
public function export1(){
        ini_set('memory_limit','500M');
        set_time_limit(0);//设置超时限制为0分钟
        $cellData = User::select('username','token','remark','head_url')->limit(5)->get()->toArray();
        // 设置表头
        $cellData[0] = array('昵称','token','备注','头像');
        // 把需要导出的数据遍历成一个数组
        for($i=0;$i<count($cellData);$i++){
            $cellData[$i] = array_values($cellData[$i]);
            $cellData[$i][0] = str_replace('=',' '.'=',$cellData[$i][0]);
        }
        // 创建导出excel 表格
        Excel::create('用户信息',function($excel) use ($cellData){
            $excel->sheet('score', function($sheet) use ($cellData){
                // init列
                $title_array = ['A', 'B', 'C', 'D'];
                // 遍历数据
                for($i=0;$i<sizeof($cellData);$i++){
                    foreach($cellData[$i] as $k=>$v){
                        // 设置图片列高度
                        $i>0 && $sheet->setHeight($i+1, 65);
                        // 设置图片列宽度
                        $sheet->setWidth(array('F'=>12));
                        // 图片放在第三列,列是从0开始的
                        // 判断图片列,如果是则放图片
                        if($k == 3 && $i>0){
                            $objDrawing = new PHPExcel_Worksheet_Drawing;
                            // 图片的路径
                            $objDrawing->setPath(storage_path('/app/public/uploads/').$v);
                            $objDrawing->setCoordinates($title_array[$k] . ($i+1));
                            $objDrawing->setHeight(80);
                            $objDrawing->setOffsetX(1);
                            $objDrawing->setRotation(1);
                            $objDrawing->setWorksheet($sheet);
                            continue;
                        }
                        // 否则放置文字数据
                        $sheet->cell($title_array[$k] . ($i+1), function ($cell) use ($v) {
                            $cell->setValue($v);
                        });    
                    }                    
                }     
            });
        })->export('xls');
    }