如何用PHP產出EXCEL?

Daniel WANG
Backend Record
Published in
4 min readJun 6, 2017

我相信很多公司都有可能遇到這問題,公司的財務或會計要資料庫內資料做財務上的處理,而又不可能請會計直接使用資料庫撈資料,而其他格式的報表對他們而言又不友善,因此他們往往會希望你產生Excel檔案方便他們作業

這篇使用PHPExcel來完成,這是一支寫好的Class,GitHub在這下載,我們會需要用到的只有裡面的Classes資料夾而已

把Classes資料夾下載下來後放到專案資料內之後就可以開始使用它了

1.先把需要的兩個檔案include進來:

include_once(“./Classes/PHPExcel.php”);include_once(“./Classes/PHPExcel/Writer/Excel2007.php”);$objPHPExcel = new PHPExcel();$objPHPExcel->setActiveSheetIndex(0);$objWorksheet = $objPHPExcel->getActiveSheet();

2.設定每列列寬

$objWorksheet->getColumnDimension(‘A’)->setWidth(20);$objWorksheet->getColumnDimension(‘B’)->setWidth(12);$objWorksheet->getColumnDimension(‘C’)->setWidth(20);

3.開始設定標題文字(隨意舉例)

$objWorksheet->setCellValue(“A1”,”產品編號”);$objWorksheet->setCellValue(“B1”,”產品名稱”);$objWorksheet->setCellValue(“C1”,”產品單價”);$objWorksheet->setCellValue(“D1”,”產品銷量”);$objWorksheet->setCellValue(“E1”,”產品營業額”);

4.把資料庫撈出來的資料array塞進每個ExcelCell裡(從第二列開始A2,B2…)

//假設$data為拿到的資料陣列
$data = $get_Data->get_data();
for($i=2;$i< count($data);$i++){$objWorksheet->setCellValue(“A”.$i,$data[($i-2)][‘id’]);$objWorksheet->setCellValue(“B”.$i,$data[($i-2)][‘name’]);$objWorksheet->setCellValue(“C”.$i,$data[($i-2)][‘price’]);$objWorksheet->setCellValue(“D”.$i,$data[($i-2)][‘amounts’]);$objWorksheet->setCellValue("E".$i,$data[($i-2)]['sale']);}

注意事項 : 筆者親測的時候,不知道為何用 foreach跑會一直出錯…所以最後只好用 for迴圈

5.產生Excel讓財務或會計下載

最後將下方程式碼補齊後,就可以提供給他們load到這支PHP的網址,他們在自己的瀏覽器輸入網址後,就會直接用瀏覽器下載到他們本地端

$day = date("Y-m-d");header(“Content-Type: application/vnd.ms-excel”);header(“Content-Disposition: attachment;filename=”.$day.”.xlsx”);header(“Expires: 0”);header(“Cache-Control: must-revalidate, post-check=0,pre-check=0”);header(“Pragma: public”);$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, ‘Excel2007’);$objWriter->save(‘php://output’);

注意事項:這邊建議將此php放在內部後台裡,才不會讓外人看到重要資訊

--

--