PHPExcel 是經典的 Excel 產生庫(現已併入 PhpSpreadsheet),本文提供完整的導出範例,含標題樣式、欄寬設定、換行、儲存與下載。
Classes 目錄放入專案根目錄。require_once 'Classes/PHPExcel.php';<?php
require_once dirname(__FILE__) . '/Classes/PHPExcel.php';
// 假設 $a 為從資料庫取得的資料陣列
$a = [ /* ... */ ];
// 欄位字母對照(支援超過 26 欄)
$numArr = range('A', 'Z');
foreach (range('A', 'Z') as $c1) {
foreach (range('A', 'Z') as $c2) {
$numArr[] = $c1 . $c2;
}
}
$objPHPExcel = new PHPExcel();
// 標題列
$arr = ['訂單號','下單時間','城市','地區','客戶名稱','收貨人','聯系電話','收貨地址',
'ERP客戶名稱','物流系統客戶名稱','活動項目','品牌','型號','顏色','物流系統型號',
'訂貨量','單價','代收貨款','紅包','價保返利','運費','實收金額','付款方式',
'訂單來源','上游廠商','是否在倉','快遞面單號','訂單狀態','確認時間',
'末次狀態確認時間','描述','對應業務','對應客服','商家留言','下單摘要','業務員','聯系方式'];
// 設定換行
$objPHPExcel->getActiveSheet()->getStyle('H')->getAlignment()->setWrapText(true);
$objPHPExcel->getActiveSheet()->getStyle('Y')->getAlignment()->setWrapText(true);
// 設定欄寬
$widths = ['A'=>15, 'B'=>20, 'G'=>15, 'H'=>40, 'I'=>15, 'J'=>15];
foreach ($widths as $col => $w) {
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension($col)->setWidth($w);
}
// 寫入標題
foreach ($arr as $i => $title) {
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($numArr[$i].'1', $title);
}
// 寫入資料
foreach ($a as $i => $row) {
$r = $i + 2;
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue($numArr[0].$r, $row['order_sn'])
->setCellValue($numArr[1].$r, $row['add_time'])
->setCellValue($numArr[2].$r, $row['city'])
->setCellValue($numArr[3].$r, $row['region_name'])
->setCellValue($numArr[4].$r, $row['company'])
->setCellValue($numArr[5].$r, $row['consignee'])
->setCellValue($numArr[6].$r, $row['mobile'])
->setCellValue($numArr[7].$r, $row['address'])
->setCellValue($numArr[8].$r, '')
->setCellValue($numArr[9].$r, '')
->setCellValue($numArr[10].$r, '')
->setCellValue($numArr[11].$r, $row['brand_name']);
}
// 設定工作表標題
$dirName = date('Ymd');
$fileName = date('YmdHis');
$objPHPExcel->getActiveSheet()->setTitle($fileName);
$objPHPExcel->setActiveSheetIndex(0);
// 儲存檔案
$savePath = '../excel/' . $dirName . '/' . $fileName . '.xlsx';
if (!is_dir(dirname($savePath))) mkdir(dirname($savePath), 0755, true);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save($savePath);
// 導向下載
header('Location: https://' . $_SERVER['HTTP_HOST'] . '/excel/' . $dirName . '/' . $fileName . '.xlsx');
?>
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: filename=export.xls");
// 直接 echo HTML 表格或 CSV 內容
echo "<table><tr><th>姓名</th><th>年齡</th></tr>...";
createWriter('Xlsx') 搭配 setPreCalculateFormulas(false)。