1.Controller

 /*** 自定义导出** @param* @return*/@GetMapping("/export")public void exportExcel(HttpServletRequest request, HttpServletResponse response, @RequestParam("userIdListStr") String userIdListStr, @RequestParam("fieldNameListStr") String fieldNameListStr) throws Exception {List<String> userIdList = Arrays.asList(userIdListStr.split(","));List<String> fieldNameList = Arrays.asList(fieldNameListStr.split(","));dingRosterService.myExport(request, response, userIdList, fieldNameList);}

2.service

    /*** 自定义导出** @param userIdList* @param request* @param response* @param fieldNameList* @return*/void myExport(HttpServletRequest request, HttpServletResponse response,List<String> userIdList, List<String> fieldNameList) throws UnsupportedEncodingException;

3.serviceImpl

@Overridepublic void myExport(HttpServletRequest request, HttpServletResponse response, List<String> userIdList, List<String> fieldNameList) throws UnsupportedEncodingException {response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("UTF-8");Date date = new Date();SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");//在设置response.setHeader时,如果含有中文字符,一定要转换成ISO8859-1格式,否则设置的中文会出现错误。String excelName = "员工花名册信息自定义导出    " + dateFormat.format(date)+".xls";response.setHeader("content-disposition", "attachment;filename=" + new String(excelName.getBytes("gb2312"), "ISO8859-1"));try {// 这里需要设置不关闭流WriteCellStyle headWriteCellStyle = new WriteCellStyle();//设置背景颜色headWriteCellStyle.setFillForegroundColor(IndexedColors.BLUE_GREY.getIndex());//内容策略WriteCellStyle contentWriteCellStyle = new WriteCellStyle();//设置 水平居中contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);HorizontalCellStyleStrategy horizontalCellStyleStrategy =new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);EasyExcel.write(response.getOutputStream()).autoCloseStream(Boolean.FALSE).registerWriteHandler(new CustomizeColumnWidth()).registerWriteHandler(horizontalCellStyleStrategy).head(myriadPeopleHead(fieldNameList)).sheet("模板")//获取数据填充,按顺序匹配.doWrite(getMyriadPeopleReportData(userIdList, fieldNameList));} catch (Exception e) {// 重置responseresponse.reset();response.setContentType("application/json");response.setCharacterEncoding("utf-8");Map<String, String> map = new HashMap<String, String>();map.put("status", "failure");map.put("message", "下载文件失败" + e.getMessage());try {response.getWriter().println(JSON.toJSONString(map));} catch (IOException e1) {e1.printStackTrace();}}}private List getMyriadPeopleReportData(List<String> userIdList, List<String> fieldNameList) {List<List<String>> listList = new ArrayList<>();for (String userId : userIdList) {List<String> list = new ArrayList<>();for (String fieldName : fieldNameList) {String fieldList = baseDao.selectExport(fieldName, userId);if (fieldList != null) {List<FieldListDTO> fieldListDTOS = JSON.parseArray(fieldList, FieldListDTO.class);if (fieldListDTOS.size() > 1) {String label = "";int i = 0;for (FieldListDTO fieldListDTO : fieldListDTOS) {i++;label = label + "第" + i + fieldName + "为" + fieldListDTO.getLabel() + ";";fieldList = label;}} else {for (FieldListDTO fieldListDTO : fieldListDTOS) {fieldList = fieldListDTO.getLabel();}}list.add(fieldList);}}listList.add(list);}return listList;}/*** 创建自定义表头** @param fieldNameList* @return*/private List<List<String>> myriadPeopleHead(List<String> fieldNameList) {Date date = new Date();SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");List<List<String>> list = new ArrayList<List<String>>(10);for (String fieldName : fieldNameList) {List<String> head = new ArrayList<String>(2);head.add("自定义导出花名册数据信息    " + dateFormat.format(date));head.add(fieldName);list.add(head);}return list;}

excel导出时不建模板类,动态导出相关推荐

  1. FME写入Excel数据时写到模板文件指定位置

    在写入Excel数据时写到模板文件指定位置 介绍 本示例对 Excel 写模块参数概述一文进行了扩展.在该示例中,您学习了如何更新模板文件指定的单元格. 使用 FME,您可以重写 RawData 工作 ...

  2. arcgis中导入excel数据时显示没有注册类怎么解决?

    1.在excel中将xlsx文件转换为xls.然后即可直接打开. 2.使用ArcGIS10.2及以上版本.[转换工具箱]中有[excel转表]工具,转换后即可打开.

  3. C++关于DLL导出模板类和模板函数

    这两天写了个Dll,要导出普通类中的模板函数,稍微查了一下,没查到具体资料.自己根据C++模板的编译原理,推断出应该要源码放在头文件中直接导出,查了下接触的Open Source项目,确实如此.这里记 ...

  4. 【c++】因模板类导致的 LNK2019 错误:“ 无法解析的外部符号 ” 详解

    最近在做项目的时候用到了模板类 果不其然出现了那个错误 LNK2019:无法解析的外部符号 网上百度到的结果繁花怒放,大多数不符合我的需求,故自己研究了下C++的模板类规则,试图找出问题所在 ---- ...

  5. C++模板类的虚函数成员

    C++模板类只有在被使用的时候才会被特化,同样其成员函数也是在被使用的时候才被实例化.但是虚函数成员例外,原因应该是在定义一个模板类类型的变量时(使用模板类),为了确定虚函数表的大小,就已经实例化了虚 ...

  6. 用exp无法导出空表解决方法/用exp导出数据时表丢失原因

    用exp无法导出空表解决方法/用exp导出数据时表丢失原因 最早的一次使用oracle 11g导出数据发现有的表丢失了,感觉莫名其妙的,后来终于找到原因了. 找到问题以后,再看看解决方案. 11GR2 ...

  7. Excel模板导出之动态导出

    说明 目前Magicodes.IE已支持Excel模板导出时使用JObject.Dictionary和ExpandoObject来进行动态导出,具体使用请看本篇教程. 本功能的想法.部分实现初步源于a ...

  8. JAVA导出Excel通用工具类——第一篇:详细介绍POI 导出excel的多种复杂情况,包括动态设置筛选、动态合并横向(纵向)单元格等多种复杂情况——保姆级别,真的不能再详细了,代码拿来即用)

    JAVA导出Excel通用工具--第一篇:详细介绍POI 导出excel的多种复杂情况,包括动态设置筛选.动态合并横向(纵向)单元格等多种复杂情况--保姆级别,真的不能再详细了,封装通用工具类,代码拿 ...

  9. excel导出时 如何根据java后台返回的结果 动态实现excel复选框的勾选

    现在有一个excel的模板,供导出的时候使用(如下图),我们要根据java后台出从数据库取出的数据动态实现P单元格中复选框的勾选, 如果返回的结果是在职,那么在职复选框就被勾选,以此类推. 问题是我们 ...

最新文章

  1. 雷林鹏分享:PHP 数组
  2. yarn配置日志聚合:将日志都聚集到某一台服务器
  3. DataBinding 学习系列(2)详解DataBinding在xml中的使用
  4. 用.NET写“算命”程序
  5. Java多线程系列(十):源码剖析AQS的实现原理
  6. C++ 偏微分数值计算库_Windows下RTCGAToolbox库下载TCPA数据(RPPA)学习笔记
  7. Spark 部署及示例代码讲解
  8. 【分享】用东野圭吾的方式说爱你
  9. go channel
  10. 【MCM-2017】2017年数模美赛D题 - 特奖论文学习
  11. 阮一峰ES6入门学习笔记~~变量的解构赋值
  12. 广成子:值得收藏-史上最全Linux ps命令详解
  13. 图标设计五条黄金法则
  14. 寄存器与移位寄存器(数字电路)
  15. esxi不识别硬盘_esxi在线添加硬盘,系统没有识别到怎么办(重启除外)
  16. 学界丨我这样预测了医疗AI的发展,或许你也可以(附论文链接)
  17. php++倒计时插件下载,jQuery实现倒计时插件
  18. 腾讯微博为何干不过新浪?
  19. javax.naming.CommunicationException:simple bind faild
  20. Word控件Spire.Doc 【邮件合并】教程(四):如何使用邮件合并合并图像值

热门文章

  1. 正确使用Google英文版
  2. EasySysprep5系统封装教程
  3. Android 百度推送服务
  4. 11年老宏碁笔记本更换无线网卡AR5BWB22(AR5B22),需要隐藏一个脚的方法,才能启动网卡!
  5. 浅析QQ密码保护原理
  6. Win10连不上蓝牙鼠标
  7. 唐诗宋词 v1.5 软件下载 诗词库更新时间20090426 唐诗宋词三百首 GCLsoft
  8. 互联网公司笔试-逻辑推理题及解答【精选100道】
  9. 第一章_Android入门
  10. 三国、SOA以及关于自由的其他