php实现excel导出excel
PHPExcel 库实现 Excel 导出
PHPExcel 是一个流行的 PHP 库,用于处理 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('A2', '张三');
$sheet->setCellValue('B2', '25');
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 实现 Excel 导出
PhpSpreadsheet 是 PHPExcel 的继承者,推荐使用它来处理 Excel 文件。以下是使用 PhpSpreadsheet 导出 Excel 的示例。
安装 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('A2', '李四');
$sheet->setCellValue('B2', '30');
$writer = new Xlsx($spreadsheet);
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="example.xlsx"');
header('Cache-Control: max-age=0');
$writer->save('php://output');
exit;
使用 CSV 格式导出数据
如果不需要复杂的 Excel 功能,可以使用 CSV 格式导出数据,这种方法简单高效。
header('Content-Type: text/csv');
header('Content-Disposition: attachment;filename="example.csv"');
$output = fopen('php://output', 'w');
fputcsv($output, ['姓名', '年龄']);
fputcsv($output, ['王五', '28']);
fclose($output);
exit;
使用 Laravel Excel 包
在 Laravel 框架中,可以使用 Laravel Excel 包来简化 Excel 导出。
安装 Laravel Excel:
composer require maatwebsite/excel
创建一个导出类:
namespace App\Exports;
use Maatwebsite\Excel\Concerns\FromArray;
class UsersExport implements FromArray
{
public function array(): array
{
return [
['姓名', '年龄'],
['赵六', '35']
];
}
}
在控制器中调用导出:
use App\Exports\UsersExport;
use Maatwebsite\Excel\Facades\Excel;
public function export()
{
return Excel::download(new UsersExport, 'users.xlsx');
}
注意事项
确保服务器有足够的权限写入文件,特别是在使用文件系统保存 Excel 文件时。
设置正确的 HTTP 头信息,确保浏览器正确处理文件下载。
对于大数据量导出,考虑使用分块处理或队列任务,避免内存不足或超时问题。







