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

上一篇:

下一篇:

captcha