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

PHP 導出中文 Excel 文件完整類實現:HTML 表格法與 CSV 雙模式

     編輯:PHP 綜合知識

方案一:HTML 表格導出類 (支援樣式、多工作表模擬)

buildHtml($headers, $data);
    }
    
    private function buildHtml(array $headers, array $data): string {
        $html = '';
        $html .= '';
        $html .= '';
        $html .= '';
        
        // 表頭
        foreach ($headers as $h) {
            $html .= "";
        }
        $html .= '';
        
        // 數據行
        foreach ($data as $row) {
            $html .= '';
            foreach ($row as $cell) {
                // 長數字 (身份證/銀行卡) 強制文本格式
                $style = (is_numeric($cell) && strlen($cell) >= 14) 
                    ? "style='vnd.ms-excel.numberformat:@;padding:4px'" 
                    : "style='padding:4px'";
                $html .= "";
            }
            $html .= '';
        }
        
        $html .= '
{$h}
{$cell}
'; return $html; } } // 使用 $exporter = new ExcelExporter(); $exporter->export( ['編號', '姓名', '身份證'], [ [1, '張三', '110101199001011234'], [2, '李四', '110101199001011235'], ], '用戶列表' );

方案二:CSV 簡潔導出 (零依賴、大數據首選)



關鍵編碼與格式處理對比

場景HTML 表格法CSV 法
中文支援charset=UTF-8 + iconv 文件名UTF-8 BOM + 文件名編碼
長數字文本化`vnd.ms-excel.numberformat:@`前綴 `\t` 或 `="..."`
樣式/合併儲存格支援 (CSS/HTML)不支援
多工作表不支援 (單文件)不支援
內存佔用全量構建字符串流式寫入,極低
Excel 打開速度較慢 (解析 HTML)極快 (原生格式)
適用數據量< 5 萬行無上限

進階:PhpSpreadsheet 專業導出 (推薦複雜報表)

composer require phpoffice/phpspreadsheet
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->fromArray($headers, null, 'A1');
$sheet->fromArray($data, null, 'A2');

// 列寬自適應
foreach ($sheet->getColumnDimensions() as $dim) {
    $dim->setAutoSize(true);
}

// 導出
$writer = new Xlsx($spreadsheet);
$writer->save('php://output');

總結選型指南

  • **簡單後台導出、<5萬行、需基本樣式** → HTML 表格類
  • **大數據導出、定時任務、無樣式需求** → CSV 生成器流式導出
  • **複雜報表、多 Sheet、條件格式、圖表、模板** → PhpSpreadsheet
  • **現代前後端分離** → 後端提供 JSON,前端 SheetJS/xlsx.js 生成 .xlsx 下載

核心原則:**編碼統一 UTF-8、長數字強制文本、大數據流式處理、文件名編碼轉換**。掌握這四點,解決 95% 的 Excel 導出坑。

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