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真的是目前比较稳妥的选择。功能全,社区也活跃,值得用在生产项目里。
评论区