PhpSpreadsheet 用于 PHP:完整指南及示例
\n\n1. 什么是 PhpSpreadsheet 以及为什么需要它
\nPhpSpreadsheet 是一个强大的 PHP 库,用于读取、写入和管理 Excel (XLSX, XLS)、LibreOffice Calc (ODS)、CSV、HTML 等格式的电子表格。它是流行但已过时的 PHPExcel 库的继承者,后者于 2017 年停止开发。PhpSpreadsheet 完全按照现代 PHP 标准(PSR-4、PSR-7、PSR-12)重写,支持处理大量数据、复杂公式、样式、图表和条件格式。
\n为什么需要它?在 Web 开发中,经常需要将数据库中的数据导出为 Excel 报表、导入用户上传的表格、生成发票、价目表或财务文档。PhpSpreadsheet 允许以编程方式完成这些操作,无需在服务器上安装办公套件。它支持超过 30 种文件格式,包括 XLSX、ODS、CSV、HTML、PDF(通过外部库),并且可以处理公式、条件格式、合并单元格、图像和批注。
\n该库正在积极开发中(GitHub 上超过 3000 颗星),并用于 Laravel Excel、PhpOffice Suite 等项目和许多企业系统中。它非常适合创建报表、数据迁移、文档工作流自动化以及与 CRM/ERP 系统集成。
\n2. 安装
\nPhpSpreadsheet 通过 Composer(PHP 的标准依赖管理器)安装。请确保您已安装 PHP 7.4 或更高版本(推荐 8.0+)。
\ncomposer require phpoffice/phpspreadsheet\n 安装后,项目中会出现 vendor 文件夹和 composer.json 文件。要使用该库,只需包含自动加载器:
require 'vendor/autoload.php';\n 如果您使用框架(Laravel、Symfony),该库通常通过服务提供者自动加载。
\n3. 快速入门——最小工作示例
\n让我们创建一个简单的脚本,生成一个包含数据表的 Excel 文件并提供下载:
\ngetActiveSheet();\n\n// 2. 填充单元格\n$sheet->setCellValue('A1', '姓名');\n$sheet->setCellValue('B1', '邮箱');\n$sheet->setCellValue('A2', '伊万·伊万诺夫');\n$sheet->setCellValue('B2', 'ivan@example.com');\n$sheet->setCellValue('A3', '彼得·彼得罗夫');\n$sheet->setCellValue('B3', 'petr@example.com');\n\n// 3. 设置下载头\nheader('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');\nheader('Content-Disposition: attachment;filename="users.xlsx"');\nheader('Cache-Control: max-age=0');\n\n// 4. 将文件写入输出\n$writer = new Xlsx($spreadsheet);\n$writer->save('php://output');\nexit;\n 此代码创建一个包含两行数据的 users.xlsx 文件。您可以在 Excel 或 LibreOffice Calc 中打开它。
4. 主要方法/函数/类
\n \n4.1. Spreadsheet::__construct()
\n 签名: new Spreadsheet()
功能: 创建一个新的空文档,默认包含一个工作表。
\n$spreadsheet = new Spreadsheet();\n$sheet