[PHP 开源类库]simple-Excel — 兼具优雅与性能的Excel和CSV文件读写工具
该扩展包可让你轻松读取和写入简单的 Excel 和 CSV 文件。在后台使用生成器来确保低内存使用,即使在处理大型文件时也是如此。
这是有关如何读取 Excel 或 CSV 的示例。
SimpleExcelReader::create($pathToFile)->getRows()->each(function(array $rowProperties) {// process the row});
如果 $ pathToFile
以 .csv
结尾。则假定为 CSV 文件。如果以 .xlsx
结尾,则假定为 Excel 文件。
安装
你可以通过 composer 安装该软件包:
$ composer require spatie/simple-excel
用法
读取 CSV
想象你有一个包含如下内容的 CSV 文件
email,first_name
john@example.com,john
jane@example.com,jane
// $rows是 Illuminate\Support\LazyCollection 的一个实例
$rows = SimpleExcelReader::create($pathToCsv)->getRows();$rows->each(function(array $rowProperties) {// 循环的第一个 $rowProperties 应该是下面这样的// ['email' => 'john@example', 'first_name' => 'john']
});
读取 Excel 文件
读取 Excel 文件与读取 CSV 文件相同。只需确保提供给 SimpleExcelReader
的 create
方法的路径以 xlsx
结尾。
使用懒集合
getRows
将返回 LazyCollection
实例,该实例是 Laravel 框架的一部分。因为在后台使用了生成器,即使是大文件内存使用量也会较低。
你可以在这里. 找到关于 LazyCollection
的方法
这是一个简单的愚蠢的例子,我们只想处理 first_name
长度大于 5 的行。
SimpleExcelReader::create($pathToCsv)->getRows()->filter(function(array $rowProperties) {return strlen($rowProperties['first_name']) > 5})->each(function(array $rowProperties) {// processing rows});
读取一个没有标题的文件
如果你要读取一个没有标题的文件,你应该使用 noHeaderRow()
// $rows是 Illuminate\Support\LazyCollection 的一个实例
$rows = SimpleExcelReader::create($pathToCsv)->noHeaderRow()->getRows()->each(function(array $rowProperties) {// 第一次循环的 $rowProperties 会是下面这样// [0 => 'john@example', 1 => 'john']
});
自己创建一个阅读器
首先我们已经引入了 box/spout 这个包。 你可以通过 getReader
方法获取一个阅读器的接口 \Box\Spout\Reader\ReaderInterface
$reader = SimpleExcelReader::create($pathToCsv)->getReader();
写入文件#
这里将展示如何写入一个 CSV 文件:
$writer = SimpleExcelWriter::create($pathToCsv)->addRow(['first_name' => 'John','last_name' => 'Doe',])->addRow(['first_name' => 'Jane','last_name' => 'Doe',]);
pathToCsv
文件将包含以下内容:
first_name,last_name
John,Doe
Jane,Doe
写入 Excel 文件
写入 Excel 文件与写入 CSV 相同。只需确保提供给 SimpleExcelWriter
的 create
方法的路径以 xlsx
结尾。
将 Excel 文件流式传输到浏览器
无需将文件写入磁盘,您可以将其直接流式传输到浏览器。
$writer = SimpleExcelWriter::streamDownload('your-export.xlsx')->addRow(['first_name' => 'John','last_name' => 'Doe',])->addRow(['first_name' => 'Jane','last_name' => 'Doe',])->toBrowser();
写入没有标题的文件
如果正在写入的文件没有标题行,则应使用 noHeaderRow()
方法。
$writer = SimpleExcelWriter::create($pathToCsv)->noHeaderRow()->addRow(['first_name' => 'Jane','last_name' => 'Doe',]);
});
这将输出:
Jane,Doe
添加布局
这个包底层使用了 box/spout 包。该软件包包含一个 StyleBuilder
,可用于格式化行。请注意样式只能在 Excel 文档上使用。
use Box\Spout\Writer\Common\Creator\Style\StyleBuilder;
use Box\Spout\Common\Entity\Style\Color;$style = (new StyleBuilder())->setFontBold()->setFontSize(15)->setFontColor(Color::BLUE)->setShouldWrapText()->setBackgroundColor(Color::YELLOW)->build();$writer->addRow(['values, 'of', 'the', 'row'], $style)
有关样式的更多信息,请查阅 Spout 文档.
使用替代定界符
默认情况下, SimpleExcelReader
将假定分隔符为 ,
。
使用其他分隔符的方法:
SimpleExcelWriter::create($pathToCsv)->useDelimiter(';');
获取写入的行数
您可以获取写入的行数。该数字包括自动添加的标题行。
$writerWithAutomaticHeader = SimpleExcelWriter::create($this->pathToCsv)->addRow(['first_name' => 'John','last_name' => 'Doe',]);$writerWithoutAutomaticHeader->getNumberOfRows() // returns 2
手动使用 writer 对象
因基于 box/spout 包,所以你可以通过 getWriter
来获取到底层的 \Box\Spout\Reader\WriterInterface
实现:
$writer = SimpleExcelWriter::create($pathToCsv)->getWriter();
更多学习内容请访问:
腾讯T3-T4标准精品PHP架构师教程目录大全,只要你看完保证薪资上升一个台阶(持续更新)
以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要的可以加入我的官方群点击此处。
[PHP 开源类库]simple-Excel — 兼具优雅与性能的Excel和CSV文件读写工具相关推荐
- shell读取excel_[PHP 开源类库]simple-Excel — 兼具优雅与性能的Excel和CSV文件读写工具...
该扩展包可让你轻松读取和写入简单的 Excel 和 CSV 文件.在后台使用生成器来确保低内存使用,即使在处理大型文件时也是如此. 这是有关如何读取 Excel 或 CSV 的示例. SimpleEx ...
- Excel中过长数字的问题以及CSV文件避免这个问题的处理办法
在处理导出的csv文件时发现这样一个问题用Excel和nodepad++打开如下图 所有为什么要这样呢,笔者就进行了实验.首先,在不给excel的单元格设置格式的情况下输入<=11个数字,会正常 ...
- Python 实现txt、excel、csv文件读写【附源码】
目录 前言 一.txt文件读写 二.excel文件读写 总结 前言 本文介绍使用Python进行文件读写操作,包括txt文件.excel文件(xlsx.xls.csv) 编译器使用的是PyCharm ...
- 解决Excel打开UTF-8编码的CSV文件乱码的问题 实测好用
解决Excel打开UTF-8编码的CSV文件乱码的问题 1 2 3 4 5 6 分步阅读 CSV是一个平面文件,它的编码方式有多种.比如,MongoDB以UTF-8格式存储数据,在使用mongoexp ...
- CSV文件如何使用EXCEL打开
打开Excel, 执行"数据"->"自文本", 选择CSV文件,出现文本导入向导,选择"分隔符号",下一步, 勾选"逗号&q ...
- Python学习笔记4——csv/excel文件读写保存
工具包准备和设置检查 csv文件读写和保存 csv文件读写 csv文件保存 Excel工作表文件读写和保存 excel文件读写 excel文件保存 总结 附录代码 工具包准备和设置检查 相关工具包导入 ...
- csv文件转换为excel文件
首先,这里需要简单的介绍一个软件PHPmyadmin,可能对一些大佬或者是学习python方向的同学对这个软件相对熟悉, 我是在一位学长帮我写过一个程序之后了解到这个软件,学长简单介绍的是这是一个可视 ...
- 解决Excel打开UTF-8编码CSV文件乱码的问题
最近在用QT读写CSV文件,发现将数据写入到CSV文件中,使用记事本打开文件是正常的,使用Excel打开,中文是乱码的,下面把原因和解决方法记录一下. 问题产生的原因 为什么excel打开utf-8存 ...
- 解决Excel打开UTF-8编码CSV文件乱码的问题亲测有效
前段时间用某软件导出了一个CSV文件,需要在Excel中处理并打印,但是我直接用Excel打开这个CSV文件却发现,文件中的所有中文字符都变成了乱码,经过自己的尝试,采用数据导入的方法解决了问题,后来 ...
最新文章
- DELL Poweredge服务器安装操作系统指南 补全之磁盘驱动制作
- 关于python 中的 sys.argv 的使用方法
- ap drawing 课件_ILITEK TP AP introduction.ppt
- PocketSphinx语音识别系统的编程
- 元宵快乐:看SQL大师们用SQL绘制的团圆
- 【BZOJ4008】亚瑟王,概率DP
- springcloud工作笔记107---Springboot中MyBatis 自动转换 map-underscore-to-camel-case=true 开启驼峰命名映射
- 医疗行业容灾备份建设迫在眉睫
- 细枝末节都交给App 我只负责享受生活 | 2016与我的数字生活
- 实验4:Linux下C语言编程
- 2010版gmp 计算机系统,2010版GMP附录:计算机化系统 整体及条款解读
- 区块链技术驱动商业银行开展供应链金融业务的创新路径
- 打开其他软件时,老是弹出Xftp7安装的问题(msi报错)
- 林利军2018年致投资人的信:这是一个极致者胜的时代
- Nginx配置虚拟主机(基于域名、端口及IP)
- 2022电大国家开放大学网上形考任务-民族理论与民族政策非免费(非答案)
- 百度网盘不限速下载器
- 实现1V1音视频实时互动直播系统 十二、第九节 直播客户端的实现
- 菜鸟教程java的list_Java菜鸟教程
- 商业银行会计学(四)--贷款业务的核算