1. 程式人生 > >laravel-excel設定單元格格式及ignoreEmpty的用法

laravel-excel設定單元格格式及ignoreEmpty的用法

laravel匯入匯出excel的外掛:mattwebsite/excel

安裝:

composer require mattwebsite/excel

 注意: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% 百分數保留兩位小數
// 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