PhpSpreadsheet读取写入Excel(支持高版本PHP)

Excel 的场景,在 PHP 项目里可以说是挺常见的了。不管是导入表格数据做批量,还是导出报表给运营,Excel 基本都绕不开。高版本 PHP 要搞定这活,PhpSpreadsheet是个比较靠谱的选择,稳定、文档也全,关键是还在维护。

用 Composer 装一下就行:

composer require phpoffice/phpspreadsheet
一行命令搞定,依赖也自动,挺省心的。

读取 Excel 基本就是:打开文件、选个工作表、循环读行。像下面这样用IOFactory::load搞定:

require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\IOFactory;

$spreadsheet = IOFactory::load('data.xlsx'); $worksheet = $spreadsheet->getActiveSheet();

foreach ($worksheet->getRowIterator() as $row) { $cellIterator = $row->getCellIterator(); $cellIterator->setIterateOnlyExistingCells(false); foreach ($cellIterator as $cell) { echo $cell->getValue() . "\t"; } echo "\n"; }

比较轻量,数据量大的时候响应也快。

写入就更简单了,先建一个Spreadsheet对象,加点标题、数据,保存:

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\IOFactory;

$spreadsheet = new Spreadsheet(); $worksheet = $spreadsheet->getActiveSheet(); $worksheet->setTitle('Report'); $worksheet->setCellValue('A1', 'Name'); $worksheet->setCellValue('B1', 'Age'); $worksheet->setCellValue('A2', 'John Doe'); $worksheet->setCellValue('B2', 30);

$writer = IOFactory::createWriter($spreadsheet, 'Xlsx'); $writer->save('output.xlsx');

导出表格一气呵成。

样式公式这块也不含糊,比如设置加粗红色字体,或者单元格求和都挺顺手:

$worksheet->getStyle('A1')->getFont()->setBold(true);
$worksheet->getStyle('A1')->getFont()->getColor()->setARGB('FF0000');
$worksheet->setCellValue('C1', '=SUM(B2:B10)');

唯一需要注意的是异常,尤其是文件路径错了或者权限不足,建议加个判断:

if (!file_exists('data.xlsx')) {
  die('文件不存在');
}
try {
  // 文件逻辑
} catch (Exception $e) {
  die('出错了:' . $e->getMessage());
}
别等上线了才发现读不出数据。

如果你也在高版本 PHP 里折腾 Excel,PhpSpreadsheet真的是目前比较稳妥的选择。功能全,社区也活跃,值得用在生产项目里。

zip 文件大小:32.81KB