资讯专栏INFORMATION COLUMN

关于laravel5的excel包maatwebsite/excel的使用笔记_v1.0_byKL

MkkHou / 3366人阅读

摘要:关于的包的使用笔记关于安装官网已经很详细了不再描述关于导入导入的话只有几个小地方需要注意导入的时候会有产生一些的在循环遍历导入的数据的时候主动忽略关于中文或者乱码问题或者在配置文件在安装这个模块的文档有介绍怎么生成这个文件

关于laravel5的excel包maatwebsite/excel的使用笔记 关于安装

官网已经很详细了,不再描述.
http://www.maatwebsite.nl/laravel-excel/docs/getting-started

关于导入

导入的话只有几个小地方需要注意:

导入的时候会有产生一些null的cells

$reader->ignoreEmpty();
//or
//在循环遍历导入的数据的时候主动忽略null

关于中文或者乱码问题

Excel::load("filename.csv", function($reader) {

}, "UTF-8");
或者在配置文件 excel.php(在安装这个模块的文档有介绍怎么生成这个文件)
 /*
        |--------------------------------------------------------------------------
        | Sheet heading conversion
        |--------------------------------------------------------------------------
        |
        | Convert headings to ASCII
        | Note: only applies to "heading" settings "true" && "slugged"
        |
        */

        "to_ascii"                => false, //主要修复一些乱码

        /*
        |--------------------------------------------------------------------------
        | Import encoding
        |--------------------------------------------------------------------------
        */

        "encoding"                => array(

            "input"  => "UTF-8", //中文识别
            "output" => "UTF-8"

        ),

导入的时候只读取第一个sheets

        $reader = Excel::load($file);

        $postDataFilter = [];

        $excelArray = $reader->first()->toArray();
多个表的话
Excel::batch("app/storage/uploads", function($sheets, $file) {
        
    $sheets->each(function($sheet) {//这里的$sheet变量就是sheet对象了,excel里的每一个sheet

    });

});

关于导出

需要先关注一下导出的时候maatwebsite/excel是使用什么数据的

$result2 = array( //这个代表sheet本身
    array("data1", "data2"), //这里代表一行 row,里面的数据就是横向分布的每一个row的cell
    array("data3", "data4") //这里是第二行row
);

这里需要注意的是多个sheet的话,不能直接在数组里面写,要创建多个 $excel->sheet

上面是关于导出数组的构成结构,下面是关于导出的函数需要注意的地方,至于如何完整使用,官方文档说得还算是很清晰的

public function excelExport(){
//这里需要使用use来传递变量给内部闭包,这里假设$result2是一个要转换成excel的数组数据
    Excel::create("testexcel", function ($excel) use ($result2, $apiHost) {
            $excel->sheet("Sheetname", function ($sheet) use ($result2, $apiHost){

                // Sheet manipulation
                //需要注意的地方1
                $sheet->fromArray($result2, null, "A1", false, false);   
                //需要注意的地方2                 
                foreach ($result2 as $index=>$item) {
                    if($index == 0 ){ //排除标题row
                        continue;
                    }
                    //J2:J代表excel的读取多个cell的写法,写过excel编程的不陌生
                    $sheet->getHyperlink("J2:J" . (count($result2) + 1))->setUrl($item["url"]);
                }
            });
        })->export("xlsx");
}

地方1:

这里是将数组转变为sheet的命令,`->fromArray($source, $nullValue, $startCell, $strictNullComparison, $headingGeneration)`

这里需要关注最后一个参数:`$headingGeneration`,默认是打开的,默认会将数组的keys导出,并且在第一行开始,但是一般我们第一行是用做标题的,所以需要关闭,这是例子写法:
$sheet->fromArray($data, null, "A1", false, false);
那么我们做标题时候还需要手动写入一个标题的row,例如这里是以$result2为例
$tmpHeader = [
            "id",
            "名称",
            "标签",
            //......
        ];
$result2[] = $tmpHeader;//将导出数组的第一个元素作为标题,不过需要注意,在构建这个导出数组的时候,真正的数据要从索引1开始,因为0已经是标题了

地方2:

这里是将一个cell设置为可点击的网页链接的

这是标准例子
$sheet->getCell("E26") //获得cell
    ->getHyperlink() //获取Hyperlink对象
    ->setUrl("http://examle.com/uploads/cv/" . $cellValue) //设置url
    ->setTooltip("Click here to access file"); //这里可以不管,只是提示信息
这里是phpexcel的方法,其实laravel-excel是封装在phpexcel上面的,所以大概的方法都差不多
//对比参考一下
//这是设置url跳转的
$objPHPExcel->getActiveSheet()->setCellValue("E26", "www.phpexcel.net");
$objPHPExcel->getActiveSheet()->getCell("E26")->getHyperlink()->setUrl("http://www.phpexcel.net");

//这是设置在sheet内部跳转的
$objPHPExcel->getActiveSheet()->setCellValue("E26", "www.phpexcel.net");
$objPHPExcel->getActiveSheet()->getCell("E26")->getHyperlink()->setUrl("sheet://"Sheetname"!A1");
那么这里个例子里面是设置单例的,如果我们要设置整个数组的某一列的都变成可点击的话,就需要用循环遍历数组然后,循环seturl了

参考:

官网

https://github.com/Maatwebsite/Laravel-Excel/issues/926

Change a cell into a clickable URL

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22494.html

相关文章

  • Laravel不权威导航

    摘要:版微信第三方登陆包括微信微博等等,查看支持列表扩展好用的图片处理,也方便使用百度版百度版支付集合,包含支付宝等支付宝在的封装各国语言包,包含简体中文生成二维码工具,亲测好用未完大家可以向我推荐,直接在本文下留言即可。 Laravel不权威导航 Hi 这里是Roy整理的Laravel相关索引,希望能帮到大家showImg(http://static.segmentfault.com/bu...

    focusj 评论0 收藏0
  • laravel 发送带附件邮件

    摘要:有时候需要给运营定时发送表格数据,方式是定时跑程序将数据生成一个然后邮件发送到运营邮箱,这里用来处理安装下载用户用户昵称公司名称销售功能版本次数最高消耗剩余时间使用百度老王从数据库读取的结果发送邮件邮件配置参考模板文件附件内容发送时 有时候需要给运营定时发送表格数据,方式是定时跑程序将数据生成一个 excel 然后邮件发送到运营邮箱,这里用 laravel 来处理. 安装 maatwe...

    kevin 评论0 收藏0
  • laravel package收集

    摘要:查找保存下载用搭建自己的缓存仓库权限管理的好选择基于封装的后台管理系统,支持手机和端访问支付宝风格的验证器后台系统微信接口的部署脚本开发的博客系统百度推送自动记录用户行为扩展一个项目管理系统根据生成对应导航的状态 1.debug https://github.com/barryvdh/l... showImg(https://segmentfault.com/img/bVmhWL); ...

    psychola 评论0 收藏0
  • 如何在 Laravel 项目中处理 Excel 文件

    摘要:本文经授权转自社区说明是一款强大的文件处理扩展包能够快速完成文件的的导出解析等功能本项目由团队成员整理发布首发地为社区文章的项目截图运行代码请见请参照此文档运行文章概览安装基础用法更多功能接下来是详细解说安装使用安装该扩展包安装完成后, 本文经授权转自 PHPHub 社区 说明 maatwebsite/excel 是一款强大的 Excel 文件处理扩展包, 能够快速完成 Excel 文...

    chadLi 评论0 收藏0
  • es6学习笔记-let,const和块级作用域_v1.0_byKL

    摘要:考虑到环境导致的行为差异太大,应该避免在块级作用域内声明函数。函数声明语句函数表达式循环循环还有一个特别之处,就是循环语句部分是一个父作用域,而循环体内部是一个单独的子作用域。声明一个只读的常量。 es6学习笔记-let,const和块级作用域_v1.0 块级作用域 javascript 原来是没有块级作用域的,只有全局作用域和函数作用域 例子1 因为没有块级作用域,所以每次的i都是一...

    Youngdze 评论0 收藏0

发表评论

0条评论

MkkHou

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<