php实现excel导出excel
PHP 实现 Excel 导出
使用 PHPExcel 库(已停止维护,推荐 PhpSpreadsheet)
PHPExcel 是一个流行的库,用于处理 Excel 文件。以下是使用 PHPExcel 导出 Excel 的基本步骤。
安装 PHPExcel(通过 Composer):
composer require phpoffice/phpexcel
导出 Excel 的代码示例:
require_once 'vendor/autoload.php';
$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);
$sheet = $objPHPExcel->getActiveSheet();
// 设置表头
$sheet->setCellValue('A1', '姓名');
$sheet->setCellValue('B1', '年龄');
$sheet->setCellValue('C1', '邮箱');
// 填充数据
$data = [
['张三', 25, 'zhangsan@example.com'],
['李四', 30, 'lisi@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-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="example.xlsx"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
exit;
使用 PhpSpreadsheet(PHPExcel 的继任者)
PhpSpreadsheet 是 PHPExcel 的现代替代品,功能更强大且维护活跃。
安装 PhpSpreadsheet:

composer require phpoffice/phpspreadsheet
导出 Excel 的代码示例:
require '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'],
];
$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-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="example.xlsx"');
header('Cache-Control: max-age=0');
$writer = new Xlsx($spreadsheet);
$writer->save('php://output');
exit;
使用 CSV 格式导出
如果不需要复杂的 Excel 功能,可以使用简单的 CSV 格式导出。
导出 CSV 的代码示例:

header('Content-Type: text/csv');
header('Content-Disposition: attachment;filename="example.csv"');
$data = [
['姓名', '年龄', '邮箱'],
['张三', 25, 'zhangsan@example.com'],
['李四', 30, 'lisi@example.com'],
];
$output = fopen('php://output', 'w');
foreach ($data as $row) {
fputcsv($output, $row);
}
fclose($output);
exit;
使用 Laravel 框架的 Excel 导出
如果使用 Laravel 框架,可以配合 maatwebsite/excel 包实现导出。
安装 maatwebsite/excel:
composer require maatwebsite/excel
创建导出类:
namespace App\Exports;
use Maatwebsite\Excel\Concerns\FromArray;
class UsersExport implements FromArray
{
public function array(): array
{
return [
['姓名', '年龄', '邮箱'],
['张三', 25, 'zhangsan@example.com'],
['李四', 30, 'lisi@example.com']
];
}
}
在控制器中调用:
use App\Exports\UsersExport;
use Maatwebsite\Excel\Facades\Excel;
public function export()
{
return Excel::download(new UsersExport, 'users.xlsx');
}
注意事项
- 确保服务器有足够的权限生成和写入文件。
- 导出前清除所有输出缓冲区,避免文件损坏。
- 对于大数据量导出,建议分批次处理以避免内存不足。






