之前用过PHP读取excel、csv文件的一些库,比如PHPExcel,今天找了一个PHPOffice/PhpSpreadsheet,网上有说现在PHPExcel已经不再维护了,最新的一次提交还是在2017年12月25号,看了一下,phpexcel也还在维护中,不过更新频率不如PhpSpreadsheet。本文地址:http://www.04007.cn/article/808.html,未经许可,不得转载.
PhpSpreadsheet需要php环境开启php_zip、php_xml、php_gd2、php_fileinfo扩展,我这里用PhpSpreadsheet主要是读取csv文件,PhpSpreadsheet本身可以支持很多格式,可以看IOFactory类中的定义。使用PhpSpreadsheet读取CSV表格内容的代码示例:本文地址:http://www.04007.cn/article/808.html,未经许可,不得转载.
#composer.json中的配置,我这里php版本不是很高,就用这个了 "phpoffice/phpspreadsheet":"1.8.2" #读取CSV表格内容代码 use \PhpOffice\PhpSpreadsheet\IOFactory; //导入csv文件内容:注意Csv是有大小写要求的 $csvObject = IOFactory::createReader('Csv') ->setDelimiter(',') ->setInputEncoding('GBK') ->setEnclosure('"') ->setReadDataOnly(true) ->setSheetIndex(0); try { $spreadsheet = $csvObject->load($file); } catch (\PhpOffice\PhpSpreadsheet\Reader\Exception $e) { echo ("文件载入失败:{$file}, Error:". $e->getMessage()); }本文地址:http://www.04007.cn/article/808.html,未经许可,不得转载.
PhpSpreadsheet对于不同格式的文件有不同的读取方法,比如xlsx格式使用\PhpOffice\PhpSpreadsheet\Reader\Xlsx(),csv格式使用\PhpOffice\PhpSpreadsheet\Reader\Csv(),不过你直接使用这些类,它会提示不不建议直接使用,最好是使用\PhpOffice\PhpSpreadsheet\IOFactory 这个工厂类,通过IOFactory::ccreateReader方法来找到对应的类的处理器。本文地址:http://www.04007.cn/article/808.html,未经许可,不得转载.
#读取表格内容数据 $sheet = $spreadsheet->getActiveSheet(); $res = array(); #getRowIterator表示从第几行开始取数据,一般第一行是列名 $data = array(); foreach $sheet->getRowIterator(2) as $row) { $row = array(); foreach ($row->getCellIterator() as $cell) { $row[] = $cell->getFormattedValue(); } $data[$row->getRowIndex()] = $row; }本文地址:http://www.04007.cn/article/808.html,未经许可,不得转载.
在使用的过程中发现,一开始读取带有中文的csv表格,打印出来的内容不显示中文(有些可能乱码),需要添加这项设置setInputEncoding('GBK') ,其它PhpSpreadsheet还可支持Excel中多张表的操作.本文地址:http://www.04007.cn/article/808.html,未经许可,不得转载.
#只导入某些表 $reader->setLoadSheetsOnly(['sheet1','sheet2']); #列出所有sheet名称 $reader->listWorksheetNames('test.xls'); #列出sheet的信息,多少列、多少行等 $reader->listWorksheetInfo('test.xlsx');本文地址:http://www.04007.cn/article/808.html,未经许可,不得转载.
本文地址:http://www.04007.cn/article/808.html 未经许可,不得转载. 手机访问本页请扫描右下方二维码.
![]() |
![]() |
手机扫码直接打开本页面 |