在PHP开发中,尤其是涉及到批量导入导出和生成办公数据表格场景下,读取Excel文件数据以及生成Excel表格文件功能必不可少,而且有时要生成复杂结构的表格,phpoffice下的phpspreadshee包无疑能很好满足你的需求,使用Composer引入即可非常方便,也可以去Github下载源码自己集成。
phpspreadsheet的Composer官方地址:https://packagist.org/packages/phpoffice/phpspreadsheet
Github地址:https://github.com/PHPOffice/PhpSpreadsheet
官方文档地址:https://phpspreadsheet.readthedocs.io/en/latest/
概述
PhpSpreadsheet 是一个用纯PHP编写的库,它提供了一组允许您读取和写入各种电子表格文件格式(如 Excel 和 LibreOffice Calc)的类。
支持的文件格式
格式 | 阅读 | 写作 |
---|---|---|
开放文档格式/OASIS (.ods) | ✓ | ✓ |
Office Open XML (.xlsx) Excel 2007 及更高版本 | ✓ | ✓ |
BIFF 8 (.xls) Excel 97 及更高版本 | ✓ | ✓ |
比夫 5 (.xls) Excel 95 | ✓ | |
电子表格 ML (.xml) Excel 2003 | ✓ | |
数字 | ✓ | |
HTML | ✓ | ✓ |
西尔克 | ✓ | |
CSV文件 | ✓ | ✓ |
PDF(使用需要单独安装的 TCPDF、Dompdf 或 mPDF 库) | ✓ |
PHP版本支持
对 PHP 版本的支持只会在该 PHP 版本生命周期结束后的六个月内得到维护 。
目前所需的 PHP 最低版本为 PHP 7.4,将支持该版本至 2023 年 6 月 28 日。
有关其他要求,请参阅composer.json
。
安装
使用composer将 PhpSpreadsheet 安装到你的项目中:
composer require phpoffice/phpspreadsheet
如果您打算使用它们,也可以下载文档和示例:
composer require phpoffice/phpspreadsheet --prefer-source
php-fpm如果您在开发机器上构建您的安装,而该开发机器的 PHP 版本与将要部署的服务器不同,或者如果您的 PHP CLI 版本与您的运行时(例如Apache 的)不同,那么您可能mod_php需要在安装之前将以下内容添加到您的composer.json:
{
"require": {
"phpoffice/phpspreadsheet": "^1.28"
},
"config": {
"platform": {
"php": "7.4"
}
}
}
然后运行
composer install
以确保检索到正确的依赖项以匹配您的部署环境。
其他安装选项
如果您想写入 PDF,或者在写入 HTML 或 PDF 时包含图表,那么您将需要安装额外的库:
对于 PDF 生成,您可以安装以下任何一个,然后配置 PhpSpreadsheet 以指示您将使用哪个库:
并使用以下命令配置 PhpSpreadsheet:
// Dompdf, Mpdf or Tcpdf (as appropriate)
$className = \PhpOffice\PhpSpreadsheet\Writer\Pdf\Dompdf::class;
IOFactory::registerWriter('Pdf', $className);
或您选择安装的库的适当 PDF Writer 包装器。
图表导出
对于图表导出,我们支持以下包,您还需要使用以下包自行安装composer require
- jpgraph/jpgraph (这个包在4.0版本就被废弃了,你可以到jpgraph.net手动下载支持PHP 8及以上的最新版本)
- mitoteam/jpgraph(支持 php 8.1 的分支)
然后使用以下命令配置 PhpSpreadsheet:
// to use jpgraph/jpgraph
Settings::setChartRenderer(\PhpOffice\PhpSpreadsheet\Chart\Renderer\JpGraph::class);
//or
// to use mitoteam/jpgraph
Settings::setChartRenderer(\PhpOffice\PhpSpreadsheet\Chart\Renderer\MtJpGraphRenderer::class);
如果您想要生成包含图表的 HTML 或 PDF 文件,那么这些库中的一个或另一个是必需的;或者从您的代码中将图表呈现为图像格式。它们不需要定义用于写入Xlsx
文件的图表。其他文件格式不支持编写图表。