资讯动态

PhpSpreadsheet:3 步让 PHP 读写 Excel 电子表格,新手也能快速上手报表生成

发布时间:2026/8/24 11:49:07 来源:尧图企业网站定制
PhpSpreadsheet3 步让 PHP 读写 Excel 电子表格新手也能快速上手报表生成【免费下载链接】PhpSpreadsheetA pure PHP library for reading and writing spreadsheet files项目地址: https://gitcode.com/gh_mirrors/ph/PhpSpreadsheet用 PhpSpreadsheet 读写 Excel 电子表格是 PHP 项目里绕不开的一件实事。它是个纯 PHP 实现的库不需要 Excel、不需要 COM 组件在服务器或 CLI 里就能直接读取和生成.xlsx/.xls/.csv/.ods/ HTML 等表格文件。适合正在做后台导出、数据导入、自动化报表的 PHP 开发者——哪怕你刚接触它也能在几分钟内跑通第一个例子。下面这套流程就是照着真实业务场景一步步讲清楚怎么用不用啃源码。它能帮你搞定的几件事先说它在你项目里能干哪些具体的活而不是抽象的功能清单批量导出报表把数据库查出来的一堆数据写成带表头、加粗、合计公式的.xlsx直接发给客户或下载。解析用户上传的表格用户传进来的是.xls、.xlsx还是.csv你不用管统一读成 PHP 数组去处理。做出能直接交付的 Excel加自动筛选AutoFilter、条件格式、公式打开就是成品不用人工再排版。生成分享版同一份工作簿可以转成 HTML 或 PDFPDF 需额外装dompdf/mpdf/tcpdf。最快上手路径一条命令 三步验证装它只需一条命令需要 PHP 8.2composer require phpoffice/phpspreadsheet没有 Composer 也可以直接克隆仓库git clone https://gitcode.com/gh_mirrors/ph/PhpSpreadsheet然后按三步验证环境没问题① 建一个空工作簿 → ② 往 A1 写个值 → ③ 保存成文件。跑通这段代码说明装好了require vendor/autoload.php; $spreadsheet new \PhpOffice\PhpSpreadsheet\Spreadsheet(); $sheet $spreadsheet-getActiveSheet(); $sheet-setCellValue(A1, 你好PhpSpreadsheet); $writer \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, Xlsx); $writer-save(hello.xlsx);在命令行执行后当前目录会多出一个能正常打开的hello.xlsx恭喜你链路已通。两个最典型的用法从数据到一份能直接交付的 xlsx 报表这是最高频的场景手里有一批二维数据要变成带样式、带合计的表格。核心是fromArray灌数据 getStyle调格式 公式算合计$data [ [姓名, 部门, 销售额], [张三, 技术部, 12000], [李四, 销售部, 9800], ]; $sheet-fromArray($data, null, A1); $sheet-getStyle(A1:C1)-getFont()-setBold(true); $sheet-setCellValue(C4, SUM(C2:C3));IOFactory::createWriter($spreadsheet, Xlsx)-save(report.xlsx)一保存就是一份表头加粗、末行带合计的成品报表。把用户上传的表格文件读进来反过来读文件更简单。IOFactory::load()会自动识别格式.xls、.xlsx、.csv…读回来再用迭代器逐行取数$file uploads/report.xlsx; $spreadsheet \PhpOffice\PhpSpreadsheet\IOFactory::load($file); $sheet $spreadsheet-getActiveSheet(); foreach ($sheet-getRowIterator() as $row) { $cells []; foreach ($row-getCellIterator() as $cell) { $cells[] $cell-getValue(); } } $spreadsheet-disconnectWorksheets(); 最后那句disconnectWorksheets()不是可选项——见下一节的内存不释放大文件尤其重要。新手最容易踩的几个坑这些坑文档里都提到过提前知道能省不少排查时间现象原因解决办法大表格内存暴涨、甚至 OOM每个单元格约占 1k 内存默认全部常驻内存读取时setReadDataOnly(true)、setLoadSheetsOnly([...])只读需要的部分处理完disconnectWorksheets()unset导出的日期显示成一串数字写进去的是数值没设日期格式给单元格setFormatCode(yyyy-mm-dd)或直接写 PHP 时间戳中文在 Excel 里乱码源文件编码或字体不匹配源码用 UTF-8CSV 建议用带 BOM 的utf-8-sig字体可设为中文字体自动识别格式偶尔报错或偏慢IOFactory自动探测会逐个尝试 reader已知格式时直接用createReader(Xlsx)指定更快更稳工作簿删了内存却不释放工作簿与表格之间存在循环引用先disconnectWorksheets()断开再unset($spreadsheet)进阶资源指引需要深入某个功能时直接进对应文档比翻源码快得多官方文档入口docs/index.md读 / 写文件与各种选项docs/topics/reading-and-writing-to-file.md支持的文件格式对照docs/topics/file-formats.md自动筛选AutoFilterdocs/topics/autofilters.md条件格式docs/topics/conditional-formatting.md大文件内存优化docs/topics/memory_saving.md可运行的示例代码samples/全部支持函数清单docs/references/function-list-by-name.md源码模块也值得知道位置核心对象在src/PhpSpreadsheet/读写实现分别在src/PhpSpreadsheet/Reader/和src/PhpSpreadsheet/Writer/。跑通第一个hello.xlsx只是开始真正的价值在你自己的那份报表里。现在就去把今天数据库里的那批数据用上面的导出报表步骤写成一份.xlsx发出去——你会发现PHP 生成 Excel 从来没这么顺过。【免费下载链接】PhpSpreadsheetA pure PHP library for reading and writing spreadsheet files项目地址: https://gitcode.com/gh_mirrors/ph/PhpSpreadsheet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价