無需安裝 PHPExcel、PhpSpreadsheet 等擴展,僅用原生 header() 輸出制表符分隔的文本流,即可實現基礎 Excel 導出,適合簡單報表、數據備份等輕量場景。
$filename = date("Y年m月d日") . "數據信息統計結果.xls";
$ua = $_SERVER["HTTP_USER_AGENT"];
// 兼容各瀏覽器中文文件名
if (preg_match("/MSIE/", $ua) || !preg_match("/Firefox/", $ua)) {
$filename = urlencode($filename);
}
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:filename=" . $filename);
$headers = ['欄位1', '欄位2', '欄位3', '欄位4', '欄位5', '欄位6'];
foreach ($headers as $h) {
echo iconv('utf-8', 'gbk//IGNORE', $h) . "\t";
}
echo "\n";
// 假設 $data 為二維數組:[ ['row1col1', 'row1col2', ...], [...] ]
foreach ($data as $row) {
foreach ($row as $cell) {
echo iconv('utf-8', 'gbk//IGNORE', $cell) . "\t";
}
echo "\n";
}
$data = [
['單位ID', '單位名稱', '父ID', '省ID', '市ID', '區ID'],
[1234, 'aaa', 1000, 1000, 0, 0],
[1035, 'bbb', 1000, 1000, 0, 0],
// ... 更多行
];
iconv('utf-8', 'gbk//IGNORE', ...) 防止亂碼\t 對應列,\n 對應行,兼容性最好.xls 而非 .xlsx,實為文本格式| 優點 | 局限 |
|---|---|
| 零依賴、極簡代碼 | 不支持樣式、合併儲存格、公式 |
| 執行速度快、內存佔用低 | 大數據量易超時、無法生成真二進制 xlsx |
| 兼容所有 PHP 版本 | 中文編碼需手動處理 |
若需複雜報表(樣式、圖表、多工作表),請改用 PhpSpreadsheet;單純數據導出,原生法最輕量高效。