laravel-admin 自定义导出excel功能,并导出图片
https://www.jianshu.com/p/91975f66427d
最近用laravel-admin在做一个小项目,其中用到了excel导出功能。
但是laravel-admin自带的导出功能不带图片,并且导出的数据有很多冗余的字段,并非我所需要的功能。
所以参考官方文档调整代码,实现了自定义导出excel文件,并且带上图片;
步骤如下:
1. 安装laravel-excel插件
composer require maatwebsite/excel:~2.1.0 php artisan vendor:publish --provider="MaatwebsiteExcelExcelServiceProvider"
2. 自定义导出类
我是参照laravel-admin官方文档建立的导出类:app/Admin/Extensions/ExcelExpoter.php;
导出类中需要引入使用的Excel,和导入图片所使用的PHPExcel_Worksheet_Drawing
use MaatwebsiteExcelFacadesExcel; use PHPExcel_Worksheet_Drawing;
具体代码如下:
<?php
/**
* Created by PhpStorm.
* User: yuran
* Date: 2018/10/13
* Time: 10:04
*/
namespace App\Admin\Extensions;
use Encore\Admin\Grid\Exporters\AbstractExporter;
use Maatwebsite\Excel\Facades\Excel;
use PHPExcel_Worksheet_Drawing; class ExcelExpoter extends AbstractExporter
{
protected $head = [];
protected $body = [];
public function setAttr($head, $body){
$this->head = $head;
$this->body = $body;
} public function export()
{
//定义文件名称为日期拼上uniqid()
$fileName = date('YmdHis') . '-' . uniqid(); Excel::create($fileName, function($excel) {
$excel->sheet('sheet1', function($sheet) {
// 这段逻辑是从表格数据中取出需要导出的字段
$head = $this->head;
$body = $this->body;
//init列
$title_array = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q',
'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH']; $rows = collect([$head]); //写入标题
$sheet->rows($rows);
collect( $this->getData() )->map( function ($item,$k)use($body,$sheet,$title_array ) {
foreach ($body as $i=>$keyName){
if($keyName == 'url') { //判断图片列,如果是则放图片
$objDrawing = new PHPExcel_Worksheet_Drawing;
$v = public_path('/upload/'). array_get($item, $keyName); //拼接图片地址
$objDrawing->setPath( $v );
$sp = $title_array[$i];
$objDrawing->setCoordinates( $sp . ($k+2) );
$sheet->setHeight($k+2, 65); //设置高度
$sheet->setWidth(array( $sp =>12)); //设置宽度
$objDrawing->setHeight(80);
$objDrawing->setOffsetX(1);
$objDrawing->setRotation(1);
$objDrawing->setWorksheet($sheet);
} else { //否则放置文字数据
$v = array_get($item, $keyName);
$sheet->cell($title_array[$i] . ($k+2), function ($cell) use ($v) {
$cell->setValue($v);
});
}
}
});
});
})->export('xls');
} }
3. 调用
在model-grid中使用这个导出类:
$excel = new ExcelExpoter();
$excel->setAttr(['id', '名称', '类型', '二维码', '上传人'], ['id', 'name', 'type', 'url', 'admin']);
$grid->exporter($excel);
4. 最终效果
原数据
导出结果

laravel-admin 自定义导出excel功能,并导出图片的更多相关文章
- 项目笔记:导出Excel功能设置导出数据样式
/** * 导出-新导出 * * @return * @throws IOException */ @OperateLogAnn(type = OperateEnum.EXPORT, hibInter ...
- Vue通过Blob对象实现导出Excel功能
不同的项目有不同的导出需求,有些只导出当前所显示结果页面的表格进入excel,这个时候就有很多插件,比如vue-json-excel或者是Blob.js+Export2Excel.js来实现导出Exc ...
- Atitit.导出excel功能的设计 与解决方案
Atitit.导出excel功能的设计 与解决方案 1.1. 项目起源于背景1 1.2. Js jquery方案(推荐)jquery.table2excel1 1.3. 服务器方案2 1.4. 详细 ...
- 项目笔记:导出Excel功能
1.前台这块: var ids=""; $.post("${basePath}/assets/unRegDeviceAction_getDeviceIds.do" ...
- 项目笔记:导出Excel功能分sheet页插入数据
导出Excel功能分sheet页处理数据: /*导出EXCEL*/ public void createExcel() { log.info("导出Excel功能已经启动-BEGIN&quo ...
- vue项目导出EXCEL功能
因为一些原因导出EXCEL功能必须前端来做,所以就研究了一下,在网上也找了一些文章来看,有一些不完整,我做完了就记录下来,供大家参考: 1.首先先安装依赖: npm install file-save ...
- JAVA实现导出excel功能,封装通用导出工具类
引入maven <!--excel导出--> <dependency> <groupId>net.sourceforge.jexcelapi</groupId ...
- C# 使用Epplus导出Excel [2]:导出动态列数据
C# 使用Epplus导出Excel [1]:导出固定列数据 C# 使用Epplus导出Excel [2]:导出动态列数据 C# 使用Epplus导出Excel [3]:合并列连续相同数据 C# 使用 ...
- C# 使用Epplus导出Excel [1]:导出固定列数据
C# 使用Epplus导出Excel [1]:导出固定列数据 C# 使用Epplus导出Excel [2]:导出动态列数据 C# 使用Epplus导出Excel [3]:合并列连续相同数据 C# 使用 ...
随机推荐
- 16进制与utf-8
很多人将数据的存储.传输方式和展现形式混为一谈. 类似的16进制 2进制是讲内容在电脑里面的存储或者传输的一种格式, 而utf-8 gb2312 等是输出的展现的一种格式 不是一回事,另外 gbk包含 ...
- 1.前端数据可视化插件:Highcharts、Echarts和D3(区别)
前端数据可视化插件有很多,但我用过的只有Highcharts(https://www.hcharts.cn/).Echarts(http://echarts.baidu.com/)和D3(https: ...
- thinkphp 区间查询
ThinkPHP支持对某个字段的区间查询,例如: 富瑞华大理石平台厂家哪家好 $map['id'] = array(array('gt',1),array('lt',10)) ; 得到的查询条件是: ...
- BZOJ1912:[APIO2010]patrol巡逻
Description Input 第一行包含两个整数 n, K(1 ≤ K ≤ 2).接下来 n – 1行,每行两个整数 a, b, 表示村庄a与b之间有一条道路(1 ≤ a, b ≤ n). Ou ...
- 菜鸟nginx源码剖析数据结构篇(三) 单向链表 ngx_list_t[转]
菜鸟nginx源码剖析数据结构篇(三) 单向链表 ngx_list_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csd ...
- SpringCloud学习笔记(三):Rest微服务构建案例工程模块
需要具备的知识 1 springmvc+mybatis+mysql 2 Consumer消费者(Client)通过REST调用Provider提供者(Server)提供的服务 3 Maven的分包分模 ...
- 【solr】Solr与JDK对应版本关系,Tomcat与JDK
Solr与JDK对应版本关系,Tomcat与JDK版本对应关系 最新在部署solrCloud集群,由于自己机器上用的JDK都是JDK1.7的,然后我就从网上下载了最新下载了最先的solr6.6.0和最 ...
- 03_springmvc整合mybatis
一.整合思路 springmvc+mybaits的系统架构: 第一步整合dao层:mybatis和spring整合:通过spring管理mapper接口,使用mapper的扫描器自动扫描mapper接 ...
- [Turn]C# 强制关闭当前程序进程(完全Kill掉不留痕迹)
C#代码 /// <summary> /// 运行DOS命令 /// DOS关闭进程命令(ntsd -c q -p PID )PID为进程的ID /// </summary> ...
- 玩转大数据系列之Apache Pig高级技能之函数编程(六)
原创不易,转载请务必注明,原创地址,谢谢配合! http://qindongliang.iteye.com/ Pig系列的学习文档,希望对大家有用,感谢关注散仙! Apache Pig的前世今生 Ap ...