PHPExcel的升级版PhpSpreadsheet
发布者:梦之国
发布时间:2022-12-19
对PHP版本要求:PHP7.2及以上版本。
安装方法:使用composer进行安装,代码如下:
composer require phpoffice/phpspreadsheet
支持的文件类型:
格式 | 读 | 写作 |
---|---|---|
开放文档格式/OASIS (.ods) | ✓ | ✓ |
Office Open XML (.xlsx) Excel 2007 及更高版本 | ✓ | ✓ |
BIFF 8 (.xls) Excel 97 及以上 | ✓ | ✓ |
BIFF 5 (.xls) Excel 95 | ✓ | |
电子表格ML (.xml) Excel 2003 | ✓ | |
Gnumeric | ✓ | |
HTML | ✓ | ✓ |
SYLK | ✓ | |
CSV | ✓ | ✓ |
PDF(使用需要单独安装的 TCPDF、Dompdf 或 mPDF 库) | ✓ |
读取Excel数据进行相关操作:
<?php
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
$reader->setReadDataOnly(true);
$spreadsheet = $reader->load("hello_world.xlsx");
$worksheet = $spreadsheet->getActiveSheet();
$highestRow = $worksheet->getHighestRow(); // 总行数
$highestColumn = $worksheet->getHighestColumn(); // 总列数
$highestColumnIndex = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::columnIndexFromString($highestColumn); // 把列数的字母转成对应的数字
$lines = $highestRow - 2;
if ($lines <= 0) {
exit('Excel表格中没有数据');
}
$arr = [];
for ($row = 1; $row <= $highestRow; ++$row) {
for($l = 1; $l <= $highestColumnIndex; $l++){
$arr[$row][] = $worksheet->getCellByColumnAndRow($l, $row)->getValue();
}
}
echo "<pre>";
print_r($arr);
echo "</pre>";
注意:getHighestColumn 获取到的总列数显示的并不是数字而是Excel中的大写字母【A、B、C、D……】,如果要想转成数字方便使用需要使用以下代码进行转换:
$highestColumnIndex = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::columnIndexFromString($highestColumn); // 把列数的字母转成对应的数字
效果展示如下图:
把数据写入Excel表格:
<?php
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'Hello World !');
$sheet->setCellValue('B1', '你好世界 !');
$sheet->setCellValue('C1', 'Hello 世界 !');
$sheet->setCellValue('D1', '你好 World !');
$sheet->setCellValue('A2', '第二行');
$sheet->setCellValue('A3', '第三行');
$sheet->setCellValue('A4', '第四行');
$writer = new Xlsx($spreadsheet);
$writer->save('hello_world_new.xlsx');
其中通过 setCellValue 来设置要显示的位置和内容,第一个参数设置位置(大写字母代表列,数字代表行数【从1开始】);第二个参数设置内容。
效果图如下图所示:
标签: PHP PHPExcel PhpSpreadsheet