【Laravel】使用phpoffice/phpspreadsheet匯出資料
阿新 • • 發佈:2020-11-30
一、安裝PHPExcel
1.下載:PHPExcelhttps://github.com/PHPOffice/PHPExcel
2.解壓後:Classes資料夾改名為PHPExcel
3.把資料夾PHPExcel 放到根目錄vendor資料夾下
或者
1、composer安裝:
composer require phpoffice/phpspreadsheet
二、控制器引用
use\PhpOffice\PhpSpreadsheet\IOFactory; use\PhpOffice\PhpSpreadsheet\Style\NumberFormat; use\PhpOffice\PhpSpreadsheet\Spreadsheet;二、匯出方法
public function expor(Request $request)
{
//匯入模板
$spreadsheet = IOFactory::load(public_path('excel/exportOrder.xls'));
$spreadsheet->getActiveSheet()->setTitle('資訊匯出');
$i = 1;
//預設填充資料 $explame_data_list = array( array( 'bank_deal_no' => '1234567890123456', 'account_name' => '小明', 'bank_card' => '4231456987436654', 'deal_money' => '100.00', 'deal_time' => date("Y-m-d H:i:s"), ), ); //第二行起 $baseRow = 2; //資料從N-1行開始往下輸出 這裡是避免頭資訊被覆蓋 foreach ($explame_data_list as $k => $val) { $i = $k + $baseRow; $worksheet->setCellValue('A' . $i, $val['bank_deal_no']); $worksheet->setCellValue('B' . $i, $val['account_name']); $worksheet->setCellValue('C' . $i, $val['bank_card']); $worksheet->setCellValue('D' . $i, $val['deal_money']); $worksheet->setCellValue('E' . $i, $val['deal_time']);; }
//處理 數字過大會進行科學計數法 $worksheet->getStyle('A2')->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER); $worksheet->getStyle('C2')->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER)
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="訂單匯出.xls"');
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->save('php://output');
}