使用PhpSpreadsheet可解决PHP导出Excel的常见报错,需确保正确安装库、避免输出冲突、调整内存限制,并遵循命名空间和编码规范以保证导出成功。
PHP在导出数据到Excel时出现函数报错,通常与使用的扩展库、环境配置或代码逻辑有关。目前主流方式是使用 PhpSpreadsheet 替代已废弃的 PHPExcel。下面从常见错误入手,结合 PhpSpreadsheet 的正确使用方法进行说明。
1. 安装 PhpSpreadsheet
通过 Composer 安装(推荐): composer require phpoffice/phpspreadsheet确保项目根目录存在 vendor/autoload.php 并正确引入。
2. 基础导出示例(浏览器下载)
```php require_once 'vendor/autoload.php';use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
$spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet();
// 设置表头 $sheet->setCellValue('A1', '姓名'); $sheet->setCellValue('B1', '年龄'); $sheet->setCellValue('C1', '邮箱');
// 添加数据 $data = [ ['张三', 25, 'zhangsan@example.com'], ['李四', 30, 'lisi@example.com'], ['王五', 28, 'wangwu@example.com'] ];
$row = 2; foreach ($data as $item) { $sheet->setCellValue('A' . $row, $item[0]); $sheet->setCellValue('B' . $row, $item[1]); $sheet->setCellValue('C' . $row, $item[2]); $row++; }
// 设置下载响应头
header('Content-Ty
pe: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="users.xlsx"');
header('Cache-Control: max-age=0');
$writer = new Xlsx($spreadsheet); $writer->save('php://output');
3. 避免“Headers already sent”错误
4. 处理大数据量导出
ini_set('memory_limit', '512M');