起因是一个项目的图片导出到excel之后太大了,需要调整一下大小,这个fastadmin自带的前端导出就可以实现,但是也是比较复杂的,需要搞清楚图片的代码

在require-table.js这个文件里面找到exportOptions,添加一下代码

htmlContent: true,
// 处理导出图片
onCellHtmlData: function ($cell, row, col, htmlData) {var html = $.parseHTML(htmlData);var inputidx = 0;var selectidx = 0;var result = '';$.each(html, function () {if ($(this).is("input")) {result += $cell.find('input').eq(inputidx++).val();}else if ($(this).is("select")) {result += $cell.find('select option:selected').eq(selectidx++).text();}else if ($(this).is("a")) {// 这里就是设置图片大小的代码if($(this).context.childNodes[0].tagName=='IMG'){let str = $(this).context.childNodes[0]str.width = "60";str.height = "60";    }result += $(this).html();} else {if (typeof $(this).html() === 'undefined') {result += $(this).text();}else if (jQuery().bootstrapTable === undefined || ($(this).hasClass('filterControl') !== true && $cell.parents('.detail-view').length === 0)) {result += $(this).html();}}});return result;
},

但是如果想要设置excel的行高是不够的,需要自定义服务端导出才可以

首先,设置界面导出按钮样式

在相关控制器的index.html添加,记得改控制器的名称

<a href="javascript:;" class="btn btn-success btn-export {:$auth->check('question/export')?'':'hide'}" title="{:__('Export')}" id="btn-export-file"><i class="fa fa-download"></i> {:__('Export')}</a>

然后在该js文件里,在var table = $("#table");后面添加,这里也要记得修改控制器的名称

$(document).on("click", ".btn-export", function () {var ids = Table.api.selectedids(table);var page = table.bootstrapTable('getData');var all = table.bootstrapTable('getOptions').totalRows;console.log(ids, page, all);Layer.confirm("请选择导出的选项<form action='" + Fast.api.fixurl("question/export") + "' method='post' target='_blank'><input type='hidden' name='ids' value='' /><input type='hidden' name='filter' ><input type='hidden' name='op'><input type='hidden' name='search'><input type='hidden' name='columns'></form>", {title: '导出数据',btn: ["选中项(" + ids.length + "条)", "本页(" + page.length + "条)", "全部(" + all + "条)"],success: function (layero, index) {$(".layui-layer-btn a", layero).addClass("layui-layer-btn0");}, yes: function (index, layero) {submitForm(ids.join(","), layero);return false;},btn2: function (index, layero) {var ids = [];$.each(page, function (i, j) {ids.push(j.id);});submitForm(ids.join(","), layero);return false;},btn3: function (index, layero) {submitForm("all", layero);return false;}})
});
var submitForm = function (ids, layero) {var options = table.bootstrapTable('getOptions');console.log(options);var columns = [];$.each(options.columns[0], function (i, j) {if (j.field && !j.checkbox && j.visible && j.field != 'operate') {columns.push(j.field);}});var search = options.queryParams({});$("input[name=search]", layero).val(options.searchText);$("input[name=ids]", layero).val(ids);$("input[name=filter]", layero).val(search.filter);$("input[name=op]", layero).val(search.op);$("input[name=columns]", layero).val(columns.join(','));$("form", layero).submit();
};

最后在php文件里,添加导出方法

public function export(){if ($this->request->isPost()) {set_time_limit(0);$search = $this->request->post('search');$ids = $this->request->post('ids');$filter = $this->request->post('filter');$op = $this->request->post('op');$columns = $this->request->post('columns');$spreadsheet = new Spreadsheet();$spreadsheet->getProperties()->setCreator("FastAdmin")->setLastModifiedBy("FastAdmin")->setTitle("标题")->setSubject("Subject");$spreadsheet->getDefaultStyle()->getFont()->setName('Microsoft Yahei');$spreadsheet->getDefaultStyle()->getFont()->setSize(12);$worksheet = $spreadsheet->setActiveSheetIndex(0);$whereIds = $ids == 'all' ? '1=1' : ['id' => ['in', explode(',', $ids)]];$this->request->get(['search' => $search, 'ids' => $ids, 'filter' => $filter, 'op' => $op]);list($where, $sort, $order, $offset, $limit) = $this->buildparams();$line = 1;//设置过滤方法$this->request->filter(['strip_tags']);//如果发送的来源是Selectpage,则转发到Selectpageif ($this->request->request('keyField')) {return $this->selectpage();}list($where, $sort, $order, $offset, $limit) = $this->buildparams();$total = $this->model->where($whereIds)->order($sort, $order)->count();$list = $this->model->where($whereIds)->order($sort, $order)->limit($offset, $limit)->select(); $list = collection($list)->toArray();$result = array("total" => $total, "rows" => $list);$first = array_keys($list[0]);foreach ($first as $index => $item) {$worksheet->setCellValueByColumnAndRow($index, 1, __($item));}$worksheet = $spreadsheet->getActiveSheet();     //指向激活的工作表$worksheet->getColumnDimension('B')->setWidth(50);$worksheet->getColumnDimension('H')->setWidth(15);$worksheet->getColumnDimension('J')->setAutoSize(true);$worksheet->getColumnDimension('K')->setWidth(50);$worksheet->getColumnDimension('L')->setWidth(15);$worksheet->getColumnDimension('N')->setWidth(20);$worksheet->getColumnDimension('O')->setWidth(20);//设置表头$worksheet->setCellValue('A1', '序号');$worksheet->setCellValue('B1', '问题图片');$worksheet->setCellValue('C1', '所属村(社区)');$worksheet->setCellValue('D1', '区域分类');$worksheet->setCellValue('E1', '问题分类');$worksheet->setCellValue('F1', '角色');$worksheet->setCellValue('G1', '发现人');$worksheet->setCellValue('H1', '发现人手机号');$worksheet->setCellValue('I1', '地点');$worksheet->setCellValue('J1', '描述');$worksheet->setCellValue('K1', '整改图片');$worksheet->setCellValue('L1', '整改人手机号');$worksheet->setTitle('数据表');foreach ($list as $key => &$val) {$i=$key+2;//表格是从2开始的$worksheet->getRowDimension($i)->setRowHeight(100);//多个图片需用遍历new// 多图导出$num1 = 10;if (!empty($val['images'])) {$images = explode(",", $val['images']);foreach ($images as $k => $v){// 获取本地文件夹路径$str = explode('uploads',$v);$str2 = explode('/',$str[1]);$dir = ROOT_PATH . 'public/uploads/' .$str2[0];$image = ROOT_PATH . 'public/uploads' .$str[1];// 过滤非文件类型if (!empty($file_info['basename'])) {$basename = $file_info['basename'];// 进行检测文件是否存在is_dir($dir) OR mkdir($dir, 0777, true);$res = file_put_contents($dir . $basename, file_get_contents($image));// 引入操作图片类$drawings[$i] = new Drawing();$drawings[$i]->setResizeProportional(false); // TODO 此处顺序不可调,因为导出默认是按原图像缩放的,设置成false才可以设置成可控制的宽度,要注意哦!$drawings[$i]->setName('图片');$drawings[$i]->setDescription('图片');$drawings[$i]->setPath($image);$drawings[$i]->setWidth(60);$drawings[$i]->setHeight(60);$drawings[$i]->setOffsetX($num1);$drawings[$i]->setOffsetY(10);$drawings[$i]->setCoordinates('B' . $i);$drawings[$i]->setWorksheet($worksheet);}$num1 = $num1 + 70; // 增加每张图之间的间距}}else{$worksheet->setCellValue('B' . $i, '');}//向模板表中写入数据$worksheet->setCellValue('A'.$i,$key+1);// $worksheet->setCellValue('B'.$i,$val['images']);$worksheet->setCellValue('C'.$i,$val['village_name']);$worksheet->setCellValue('D'.$i,$val['type_area_name']);$worksheet->setCellValue('E'.$i,$val['type_question_name']);$worksheet->setCellValue('F'.$i,$val['group_name']);$worksheet->setCellValue('G'.$i,$val['personnel_user']['username']);$worksheet->setCellValue('H'.$i,$val['personnel_user']['mobile']);$worksheet->setCellValue('I'.$i,$val['address']);$worksheet->setCellValue('J'.$i,$val['description']);// $worksheet->setCellValue('K'.$i,$val['corrective_images']);$worksheet->setCellValue('N'.$i,$i,$val['personnel_user_two']['username']);$worksheet->setCellValue('L'.$i,$val['personnel_user_two']['mobile']);$worksheet->setCellValue('M'.$i,$val['status_name']);$worksheet->setCellValue('N'.$i,$val['create_date']);$worksheet->setCellValue('O'.$i,$val['correctivetime']);}   $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xls');//下载文档header('Content-Type: application/vnd.ms-excel');header('Content-Disposition: attachment;filename="'. date('Y-m-d') .'_test'.'.xls"');header('Cache-Control: max-age=0');$writer = new Xlsx($spreadsheet);$writer->save('php://output');     return;}
}

批量修改行高加上这句代码

$spreadsheet->getActiveSheet()->getDefaultRowDimension()->setRowHeight(100);

如果是想要修改除了第一行的行高,就在循环里面添加

$spreadsheet->getActiveSheet()->getDefaultRowDimension($i)->setRowHeight(100);

修改单元格宽度

$spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(15);

单元格宽度自适应

$spreadsheet->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);

fastadmin 数据导出,设置excel行高和限制图片大小相关推荐

  1. 如何通过VB合并Excel单元格以及设置Excel行高?VB创建Excel表格,合并单元格,生成图形等操作

    如何通过VB合并Excel单元格以及设置Excel行高? 例如:我想把第一列的第4,5,6,7行合并...我在怎样让合并单元格里的字居中,怎样改变字体. 请不吝赐教... ============== ...

  2. poi设置excel行高

    poi设置excel行高其实百度到处都是,不外乎就是 HSSFRow row = sheet.getRow(rowNum); row.setHeight(height); 但是有一个行高为0的行,如果 ...

  3. POI Excel行高设置

    1.Excel行高单位概述 px是相对长度,表示pixel,像素,是屏幕上显示数据的最基本的点 pt是绝对长度,表示point,磅,是印刷行业常用单位,等于1/72英寸 DPI(或PPI),分辨率,p ...

  4. POI java导出Excel设置自适应行高

    本文章参考于:https://www.cnblogs.com/dtts/p/4741575.html 需求:根据单元格的内容自动设置行高 代码: /*** 设置自适应行高的方法*/public int ...

  5. python获取excel整行数据如何保存到新的工作簿中_如何使用python将大量数据导出到Excel中的小技巧之一...

    如何使用python将大量数据导出到Excel中的小技巧 (1) 问题描述:为了更好地展示数据,Excel格式的数据文件往往比文本文件更具有优势,但是具体到python中,该如何导出数据到Excel呢 ...

  6. java excel行高_Java 设置Excel自适应行高、列宽

    在excel中,可通过设置自适应行高或列宽自动排版,是一种比较常用的快速调整表格整体布局的方法.设置自适应时,可考虑2种情况: 1.固定数据,设置行高.列宽自适应数据(常见的设置自适应方法) 2.固定 ...

  7. 支持将数据导出到Excel文档的时候设置单元格格式的.NET控件Spire.DataExport

    Spire.DataExport for .NET是e-iceblue公司推出的一款数据导出类.NET控件.作为一款专业的数据导出控件,Spire.DataExport for .NET可以帮助开发人 ...

  8. 计算机excel行高在哪里,如何在Excel2016中设置改行高和列宽?

    相信大家会发现excel2016默认的行号和列宽有的时候会不符合自己的要求,那如何在Excel2016中设置改行高和列宽?下面感兴趣的小伙伴就和小编一起来学习一下具体的方法吧! Excel2016设置 ...

  9. 使用SpringBoot+MongoDB数据导出为Excel文件

    MongoDB数据导出为Excel文件 注: 本文使用的是POI导出文件 导出数据两种创建工作簿的方式 // 创建工作簿 XSSFWorkbook wb = new XSSFWorkbook(); / ...

最新文章

  1. Morph 3D拥有近千名艺术家,欲打造全球最大的VR虚拟化身服装库
  2. 点击文字弹出一个DIV层窗口代码
  3. onActivityResult完整用法
  4. python爬虫入门教程-Python 爬虫介绍
  5. 【Android 逆向】Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )
  6. 计算机设计思想 —— 代理(proxy)
  7. VS2010下Cannot find or open the PDB file (转)
  8. 【项目实战】:Python 商铺地址分布数据分析
  9. this指针_c++11新特性之智能指针
  10. SAP Spartacus的persist focus,触发map set的条件
  11. 华为IoT平台NB编解码插件开发详细教程【下篇】
  12. layui表格固定列覆盖滚动条导致错位
  13. linux该专接本还是工作_2020河北专接本报考录取比例相差最大专业TOP榜,出乎意料吗?...
  14. android kotlin类内绑定事件,Android kotlin 点击事件防重复
  15. java多线程创建一个简单的案例
  16. NLP自然语言处理库系列教程——gensim库
  17. go -生成pb文件 - 上
  18. 一种基于深度神经网络的临床记录ICD自动编码方法
  19. KinhDown(百度网盘第三方下载工具稳定版)
  20. 免费获取全球生物量密度1km网格tif数据(GEDI L4B Gridded Aboveground Biomass Density, Version 2)

热门文章

  1. java百度上传控件_百度Bos上传文件工具类-BosUtils(java)
  2. Java学习day1--markdown使用、Dos命令、JAVA特性与安装
  3. group by的一点小说明
  4. 中高级Java面试题解析,剑指BATJ,提前祝大家程序员节快乐
  5. 获取对话框当前cfont_获取对话框当前cfont_MFC设置对话框、字体对话框、颜色对话框(转)...
  6. c语言程序图书检索源代码,C语言程序设计(图书管理系统)源代码 倾情奉献
  7. 计算机主机启动 显示器不动什么原因,电脑显示屏不亮但是主机已开机是什么原因?(五种解决方案)...
  8. 阿里云服务器搭建wordpress个人博客
  9. 哪个版本的outlook好_未来版本的Outlook的阴影?
  10. 如何将GPS手持机航点数据导出、转换格式,并用不同软件Google Earth或者ArcGIS打开?