首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 無依賴導出 Excel 實戰:原生頭輸出法詳解

     編輯:PHP 相關知識

無需安裝 PHPExcel、PhpSpreadsheet 等擴展,僅用原生 header() 輸出制表符分隔的文本流,即可實現基礎 Excel 導出,適合簡單報表、數據備份等輕量場景。

核心實現步驟

1. 設置下載頭與文件名編碼

$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);

2. 定義表頭並輸出(制表符 \t 分列,換行符 \n 分行)

$headers = ['欄位1', '欄位2', '欄位3', '欄位4', '欄位5', '欄位6'];
foreach ($headers as $h) {
    echo iconv('utf-8', 'gbk//IGNORE', $h) . "\t";
}
echo "\n";

3. 遍歷數據輸出內容行

// 假設 $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],
    // ... 更多行
];

關鍵注意事項

  • 編碼轉換: Excel 早期版本偏好 GBK,使用 iconv('utf-8', 'gbk//IGNORE', ...) 防止亂碼
  • 制表符分隔: \t 對應列,\n 對應行,兼容性最好
  • 內存效率: 大數據量時建議分塊輸出或改用生成器
  • 文件副檔名: 使用 .xls 而非 .xlsx,實為文本格式

適用場景與局限

優點局限
零依賴、極簡代碼不支持樣式、合併儲存格、公式
執行速度快、內存佔用低大數據量易超時、無法生成真二進制 xlsx
兼容所有 PHP 版本中文編碼需手動處理

若需複雜報表(樣式、圖表、多工作表),請改用 PhpSpreadsheet;單純數據導出,原生法最輕量高效。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved