最近用到Laravel导出excel的功能,记录一下。

1.引入composer包

"maatwebsite/excel": "^2.1.0"

2.使用

use Excel;
Excel::create('下载文件名', function ($excel) {
    // 第一个sheet
    $excel->sheet('用户信息', function ($sheet) {
        $sheet->setWidth([
            'A' => 14,
            'B' => 20,
            ]);
        $sheet->cell('A1', function ($cell) {
            $cell->setValue('A1的内容');
        });
    });
    // 第二个sheet
    $excel->sheet('点赞记录', function ($sheet) {
        $sheet->cell('A1', function ($cell) {
            $cell->setValue('A1的内容');
        });
        $logs = [
            '第二行',
            '第三行',
            '第四行',
        ];
        $i = 2;
        foreach ($logs as $log) {
            $sheet->appendRow($i++, [
                '从第二行开始的内容',
            ]);
        }
    });
})->export('xls');
// 导出格式

关于版本

目前只研究了2.0版本的使用方法,3.0的应该是对laravel5.6适配更好一些,但是还没时间看呢

关于打开xls文件报错

excel是不支持emoji表情的,如果导出的数据中包含emoji,请自行过滤,提供一个过滤函数

private function filterEmoji($str)
{
    $str = str_replace(PHP_EOL, '', $str);
    $str = preg_replace_callback(
        '/./u',
        function (array $match) {
            return strlen($match[0]) >= 4 ? '' : $match[0];
        },
        $str);

    return $str;
}