laravel-admin 导出excel乱码问题

问题:
laravel-admin 中顶部导出数据为csv格式,打开后直接乱码不知道如何解决,可能是字符集问题,代码里面默认是utf8格式修改为gbk依然乱码!
可以通过phpexcel导出数据,解决导出乱码的问题。

安装phpexcel的扩展

1.在laravel项目的根目录安装composer 依赖。
composer require maatwebsite/excel ~2.1.0
2.在config/app.php中注册服务提供者到providers数组:
Maatwebsite\Excel\ExcelServiceProvider::class,
3.同样在config/app.php中注册门面到aliases数组:
'Excel' => Maatwebsite\Excel\Facades\Excel::class,

修改导出文件的设置

1.文件路径
vendor/encore/laravel-admin/src/Grid/Exporters/CsvExporter.php
头部增加
use Excel;
对应的函数
export()修改为

    public function export(){
        $tables = Common::tablesname();
        if(key_exists($this->getTable(),$tables)){
            $filename = $tables[$this->getTable()];
        }else{
            $filename = $this->getTable();
        } 
          
        $titles = Common::showcolumns($this->getTable());
        $handle = [];
        $types  = Common::tablesnametype($this->getTable()); 
         //下面主要是导入数据的操作 可以根据自己逻辑修改
        $this->chunk(function ($records) use (&$handle, &$titles,$types) {
            if (empty($titles)) {
                $titles = $this->getHeaderRowFromRecords($records);          
            }
            $handle[] = $titles;
            $mapfilter = Common::export_filter($types);
            
            foreach ($records as $record) {
                $newrecord = [];
                $record = $this->getFormattedRecord($record);       
                foreach($titles as $tk =>$tv){
                    //dd($record);
                    if(key_exists(strtolower($tk),$record)){
                        $newrecord[$tk] = $record[strtolower($tk)];
                    }else{
                        $newrecord[$tk] = '';
                    }
                }
                $handle[] = $newrecord;
        });
      //把数据写入到excel中
        $cellData = $handle;
        Excel::create($filename,function($excel) use ($cellData){
        $excel->sheet('数据', function($sheet) use ($cellData){
            $sheet->rows($cellData);
        });
        })->export('xls');
}

你可能感兴趣的:(laravel-admin 导出excel乱码问题)