首页 > 编程语言 >PHP操作CSV/EXCEL的composer包phpoffice/phpspreadsheet

PHP操作CSV/EXCEL的composer包phpoffice/phpspreadsheet

时间:2024-03-30 16:31:50浏览次数:27  
标签:PhpSpreadsheet php 读取 EXCEL phpspreadsheet PhpOffice IOFactory CSV row

    之前用过PHP读取excel、csv文件的一些库,比如PHPExcel,今天找了一个PHPOffice/PhpSpreadsheet,网上有说现在PHPExcel已经不再维护了,最新的一次提交还是在2017年12月25号,看了一下,phpexcel也还在维护中,不过更新频率不如PhpSpreadsheet。

    PhpSpreadsheet需要php环境开启php_zip、php_xml、php_gd2、php_fileinfo扩展,我这里用PhpSpreadsheet主要是读取csv文件,PhpSpreadsheet本身可以支持很多格式,可以看IOFactory类中的定义。使用PhpSpreadsheet读取CSV表格内容的代码示例:

#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());
}

    PhpSpreadsheet对于不同格式的文件有不同的读取方法,比如xlsx格式使用\PhpOffice\PhpSpreadsheet\Reader\Xlsx(),csv格式使用\PhpOffice\PhpSpreadsheet\Reader\Csv(),不过你直接使用这些类,它会提示不不建议直接使用,最好是使用\PhpOffice\PhpSpreadsheet\IOFactory 这个工厂类,通过IOFactory::ccreateReader方法来找到对应的类的处理器。

#读取表格内容数据
$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;
}

    在使用的过程中发现,一开始读取带有中文的csv表格,打印出来的内容不显示中文(有些可能乱码),需要添加这项设置setInputEncoding('GBK') ,其它PhpSpreadsheet还可支持Excel中多张表的操作.

#只导入某些表
$reader->setLoadSheetsOnly(['sheet1','sheet2']);
#列出所有sheet名称
$reader->listWorksheetNames('test.xls');
#列出sheet的信息,多少列、多少行等
$reader->listWorksheetInfo('test.xlsx');

标签:PhpSpreadsheet,php,读取,EXCEL,phpspreadsheet,PhpOffice,IOFactory,CSV,row
From: https://blog.csdn.net/weixin_47792780/article/details/137175812

相关文章

  • C#程序使用NPOI包导出Excel
    安装NPOI:C#程序使用了两层循环。外层循环创建每行,内层循环创建每行的单元格。usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingNPOI.HSSF.UserModel;usingNPOI.SS.UserModel;usingS......
  • 接收文件流并导出至excel以及对二进制文件流内容的校验
    废话不说上代码consthandleRightDownload=async()=>{axios({method:'post',url:'/my/handleAndDownloadExcel',//请求地址这里写后端的地址,注意加上`/api`以确保最终的请求能被替换掉,/api表示server要替换的前缀'/api'->''data:{......
  • Excel 如何批量将矩阵(多行多列)数据转为单行或单列数据
    该问题源于这样一个实践场景,试想有一个花名册,如下这样:现在需要根据这个花名册批量将其转换为考试时贴在桌上的小标签,如下这样:那么这个需求本质上就是将多行多列数据(考生姓名、考生编号、证件号码三列)转为单列数据(上图需求结果的第二列)。第一列是静态数据,第三列是递增数列,相对......
  • Ansible获取Cisco IOS版本导出至CSV
    1.inventory和密码加密参考AnsiblePlaybook备份Juniper及Cisco设备2.创建playbook-name:getciscoswitchesversionhosts:cisco_switchesgather_facts:falsevars_files:-pass.ymlvars:ansible_password:'{{cisco_pass}}'output_path:&qu......
  • Python 基于 xlsxwriter 实现百万数据导出 excel
    追加导出+自动切换sheet⚠️excel中的每个sheet最多只能保存1048576行数据#获取项目的根路径rootPathcurPath=os.path.abspath(os.path.dirname(__file__))rootPath=curPath[:curPath.find(你的项目名称+"/")+len(你的项目名称+"/")]#临时文件l......
  • Python 基于 xlsxwriter 实现百万数据导出 excel
    增量导出+自动切换sheet⚠️excel中的每个sheet最多只能保存1048576行数据#获取项目的根路径rootPathcurPath=os.path.abspath(os.path.dirname(__file__))rootPath=curPath[:curPath.find(你的项目名称+"/")+len(你的项目名称+"/")]#临时......
  • 【小黑送书—第十四期】>>重磅升级——《Excel函数与公式应用大全》(文末送书)
    今天给大家带来AI时代系列书籍:《Excel2019函数与公式应用大全》全新升级版,ExcelHome多位微软全球MVP专家打造,精选ExcelHome海量案例,披露Excel专家多年研究成果,让你分分钟搞定海量数据运算!由北京大学出版社出版,上一版长期雄踞Excel函数类图书销量前列,《Excel2019函数与......
  • Qt自定义插件写Excel表格
    网上找到一个开源的Qt插件,下载下来,生成头文件和库文件,可以不依赖电脑是否安装Excel软件,是否有Excel驱动,可以直接输出excel文档https://github.com/dbzhang800/QtXlsxWriter/tree/master/src/xlsx#include"CopyAllFileThread.h"#include<QFileInfo>#include"LocalDb.h"#inc......
  • Finereport11 类Excel筛选
    微信公众号:次世代数据技术关注可了解更多的教程。问题或建议,请公众号留言或联系本人;微信号:weibw162本教程视频讲解可以关注本人B站账号进行观看:weibw162一、需求描述在使用FIneReport软件开发时,我们希望前台报表展示时可以类似Excel表格筛选那样,在表头进行多选筛选过滤显......
  • 关于《完全手册Excel VBA典型实例大全——通过368个例子掌握》随书样例的下载
    按照早先下载的电子教程查看和编写vba,有些例子使用运行错误,想着看看原始文件。容易看到,网上有提供的doc或者pdf文档,都不完整,可能是{完全手册Excel_VBA典型实例大全:通过368个例子掌握}.{doc,pdf}这样命名的,139页或者134页的样子。搜索发现很多一些链接要么失效,要么是需要相应的积......