1. 程式人生 > 實用技巧 >【Laravel】使用phpoffice/phpspreadsheet匯出資料

【Laravel】使用phpoffice/phpspreadsheet匯出資料

一、安裝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');
}