laravel导入导出excel的插件:mattwebsite/excel
安装:
composer require mattwebsite/excel
文档:https://laravel-excel.maatwebsite.nl/3.1/getting-started/installation.html
注意:3.0没有导入模块只有导出功能
/**
*注意:设置单元格格式为数字的必须保证所设置的单元格里面的数据为数字型
*/
public function exportExcel()
{
Excel::create('导出excel的文件名(不含后缀)',function ($excel){
$excel->sheet('test',function ($sheet){
$sheet->fromArray(
[
['姓名','年龄','性别','电话'],
[123000,0.36,'lisy',123699],
[123,0.36,'lisy','--'],
[123000,0.36,'lisy',123699],
],null, 'A1', true, false
);
$sheet->setColumnFormat(
array(
'B2:B3'=>'0.0000%',
'D2'=>'#,##0',
'A'=>'#,##0',
)
);
});
})->export('xlsx');
}
可设置的单元格格式
@ | 文本型 |
0 | 数字型 |
0.00 | 保留两位小数 |
#,##0 | 千分位整数 |
#,##0.00 | 千分位保留两位小数 |
0.00% | 百分数保留两位小数 |
更多的格式:https://laravel-excel.maatwebsite.nl/2.1/reference-guide/formatting.html
// Format column as percentage
$sheet->setColumnFormat(array(
'C' => '0%'
));
// Format a range with e.g. leading zeros
$sheet->setColumnFormat(array(
'A2:K2' => '0000'
));
// Set multiple column formats
$sheet->setColumnFormat(array(
'B' => '0',
'D' => '0.00',
'F' => '@',
'F' => 'yyyy-mm-dd',
));
注:有时候设置整列单元格格式如上,设置B列的所有的单元格可能不会成功,
原因在于excel2007 xlsx整列有2的20次行,太大,导致失败,一般可支持到65536,
但最好不要整列设置,按需设置,比如A2:A5,减少对内存的消耗
导入excel解析的时候,excel部分空格会解析为null,如果忽略null,则会导致解析出来的数组的部分行的数据出现向左偏移
在app/config/packages/maatwebsite/excel/import.php中
'ignoreEmpty' => false,//不忽略null
另外使用ignoreEmpty()函数也可以
$sheet->ignoreEmpty(false);//默认为true