首页 > 作文

[PHP 开源类库]simple

更新时间:2023-04-08 10:26:11 阅读: 评论:0

该扩展包可让你轻松读取和写入简单的 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

想象你有一个包含如下内容的 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 文件

读取 excel 文件与读取 csv 文件相同。只需确保提供给simpleexcelreadercreate方法的路径以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 文件

写入 excel 文件与写入 csv 相同。只需确保提供给simpleexcelwritercreate方法的路径以xlsx结尾。

将 excel 文件流式传输到浏览器

无需将文件写入磁盘,您可以将其直接流式传输到浏览器。

$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

  厦门方特梦幻王国好玩吗

手动使用 writer 对象

因基于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 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图