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