最近用到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;
}