本文提供 PHPExcel 讀取 Excel 模板、修改指定儲存格、導出下載的精簡實作代碼,適用於快速建立報表匯出功能。完整架構說明請參考「PHP 使用 PHPExcel 讀取、修改 Excel 並導出下載完整範例」。
<?php
$dir = $_SERVER['DOCUMENT_ROOT'] . '/backoffice/admin/oemcheck/';
$templateName = '1.xlsx';
$outputFileName = '模板.xlsx';
$txt = 'test';
$reader = new PHPExcel_Reader_Excel2007();
if (!$reader->canRead($dir . $templateName)) {
$reader = new PHPExcel_Reader_Excel5();
if (!$reader->canRead($dir . $templateName)) {
die('無法識別的 Excel 檔案!');
}
}
$phpExcel = $reader->load($dir . $templateName);
$sheet = $phpExcel->getSheet(0);
$sheet->setCellValue('B13', iconv('GBK', 'UTF-8', $txt));
$writer = new PHPExcel_Writer_Excel2007($phpExcel);
ob_start();
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment; filename="' . $outputFileName . '"');
header('Cache-Control: max-age=0');
$writer->save('php://output');
iconv('GBK', 'UTF-8') 處理中文編碼。application/vnd.openxmlformats-officedocument.spreadsheetml.sheet。php://output 避免產生臨時檔案。PHPExcel 已停止維護,新專案請直接使用 PhpSpreadsheet(composer require phpoffice/phpspreadsheet),API 高度相容,效能與記憶體管理更優。