该扩展包可让你轻松读取和写入简单的 excel 和 csv 文件。在后台使用生成器来确保低内存使用,即使在处理大型文件时也是如此。
这是有关如何读取 excel 或 csv 的示例。
simpleexcelreader::create($pathtofile)->getrows() ->each(function(array $rowproperties) { // process the row });
如果$ pathtofile
以.csv
结尾。则假定为 csv 文件。如果以.xlsx
结尾,则假定为 excel 文件。
你可以通过 compor 安装该软件包:
$ compor require spatie/simple-excel
想象你有一个包含如下内容的 csv 文件
email,first_namejohn@example.com,johnjane@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 文件与读取 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 $rowprop工商管理的课程erties) { // 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_namejohn,doejane,doe
写入 excel 文件与写入 csv 相同。只需确保提供给simpleexcelwriter
的create
方法的路径以xlsx
结尾。
无需将文件写入磁盘,您可以将其直接流式传输到浏览器。
$writer = simpleexcelwriter::streamdownload('your-export.xlsx') ->addrow([ 'first_name' => 'john', 'last_name' => 'doe', ]) ->addrow([ 'first_name' => 'jane', 'last_name' => 'doe', ]) ->tobrowr();
如果正在写入的文件没有标题行,则应使用noheaderrow()
方法。
$writer = simpleexcelwriter::create($pathtocsv) ->noheaderrow() ->addrow([ 'first_name' => 'jane', 'last_name' => 'doe', ]);});
这将输出:
jane,doe
这个包底层使用了box/spout包。该软件包包含一个stylebuilder
,可用于格式化行。请注意样式只能在 excel 文档上使用。
u box\spout\writer\common\creator\style\stylebuilder;u box\spout\common\entity\style\color;$style = (new stylebuilder()) ->tfontbold() ->tfontsize(15) ->tfontcolor(color::blue) -&g民族革命t;tshouldwraptext() ->tbackgroundcolor(color::yellow) ->build();$writer->addrow(['values, 'of', 'the', 'row'], $style)
有关样式的更多信息,请查阅spout 文档.
默认情况下,simpleexcelreader
将假定分隔符为,
。
使用其他分隔符的方法:
simpleexcelwriter::create($pathtocsv)->udelimiter(';');
您可以获取写入的行数。该数字包括自动添加的标题行。
$writerwithautomaticheader = simpleexcelwriter::create($this->pathtocsv) ->addrow([ 'first_name' => 'john', 'last_name' => 'doe', ]);$writerwithoutautomaticheader->getnumberofrows() // returns 2
厦门方特梦幻王国好玩吗
因基于box/spout包,所以你可以通过getwriter
来获取到底层的\box\spout\reader\wri张籍简介terinterface
实现:
$writer = simpleexcelwriter::create($pathtocsv)->getwriter();
更多学习内容请访问:
腾讯t3-t4标准精品php架构师教程目录大全,只要你看完保证薪资上升一个台阶(持续更新)
本文发布于:2023-04-08 10:26:09,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/fe80c1e9fe15991ed3bb8b77f7b53dfa.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:[PHP 开源类库]simple.doc
本文 PDF 下载地址:[PHP 开源类库]simple.pdf
留言与评论(共有 0 条评论) |