java实现导出Excel多行表头复杂模板

一般我们都会选择poi来导出,选择一个比较好的ExcelUtils
但是对于初学者而言不了解poi的,还需从poi API文档去学习,如果是自学的话更好,如果是公司安排的任务,没有接触过有期限的,就大大的浪费时间了,所以我在这里给一些职场人士第一次接触导出Excel总结的一个简单好用的方法


就类似于这种最典型的导出Excel模板,也是可以导出多个sheet页的,那我们该如何去导出呢?
首先我们必须导包 也是POI的包,导出Excel是少不了的

<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId></dependency>版本都是3.9

就是业务怎么去实现的 话不多说上代码

private void exportExcel(ShopNewDailyStockRspVo daily,List<ShopNewDailyStockInRspVo> ins,List<ShopNewDailyStockOutRspVo> outs ,HttpServletResponse response) {try {//WorkbookWorkbook wb = new XSSFWorkbook();//sheet1this.inExcelSheet(wb, daily, ins);//sheet12this.outExcelSheet(wb, daily, outs);String fileName = "StockDaily-"+System.currentTimeMillis()+".xlsx";response.setContentType("application/octet-stream");response.setHeader("Content-disposition","attachment;filename=" + java.net.URLEncoder.encode(fileName, "UTF-8"));response.flushBuffer();OutputStream ouputStream = response.getOutputStream();wb.write(ouputStream);ouputStream.flush();ouputStream.close();} catch (Exception e) {e.printStackTrace();}}private void inExcelSheet(Workbook wb, ShopNewDailyStockRspVo daily, List<ShopNewDailyStockInRspVo> dtls) {//styleFont font = wb.createFont();font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);CellStyle titleCellStyle=wb.createCellStyle(); titleCellStyle.setFont(font); CellStyle listTitleCellStyle=wb.createCellStyle();listTitleCellStyle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);listTitleCellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);//sheetSheet sheet = wb.createSheet("sheet1名称");//row_titleRow row_title = sheet.createRow(0);//Excel从0开始 意思是第一行Cell cell_title = row_title.createCell(0);//第一列cell_title.setCellValue("XXXX");cell_title.setCellStyle(titleCellStyle);Row row_order_no = sheet.createRow(1);Cell cell_order_no = row_order_no.createCell(0);cell_order_no.setCellValue("日期时间也是一样: "+new SimpleDateFormat("yyyy-MM-dd").format(daily.getReportDate()).toString()+" 00:00:00"+" - "+new SimpleDateFormat("yyyy-MM-dd").format(daily.getReportDate()).toString()+" 23:59:59");//row_dtl_separatorRow row_dtl_separator = sheet.createRow(3);Cell cell_dtl_separator = row_dtl_separator.createCell(0);cell_dtl_separator.setCellValue("XXXXXXXX");//从这里开始就是获取数据了 表头Row row_dtl_title = sheet.createRow(4);Cell cell_dtl_title_0 = row_dtl_title.createCell(0);cell_dtl_title_0.setCellValue("xxxx");cell_dtl_title_0.setCellStyle(listTitleCellStyle);Cell cell_dtl_title_1 = row_dtl_title.createCell(1);cell_dtl_title_1.setCellValue("xxxx");cell_dtl_title_1.setCellStyle(listTitleCellStyle);Cell cell_dtl_title_2 = row_dtl_title.createCell(2);cell_dtl_title_2.setCellValue("xxxx");cell_dtl_title_2.setCellStyle(listTitleCellStyle);Cell cell_dtl_title_3 = row_dtl_title.createCell(3);cell_dtl_title_3.setCellValue("xxxxx");cell_dtl_title_3.setCellStyle(listTitleCellStyle);Cell cell_dtl_title_4 = row_dtl_title.createCell(4);cell_dtl_title_4.setCellValue("xxxxx");cell_dtl_title_4.setCellStyle(listTitleCellStyle);Cell cell_dtl_title_5 = row_dtl_title.createCell(5);cell_dtl_title_5.setCellValue("xxxxx");cell_dtl_title_5.setCellStyle(listTitleCellStyle);//循环获取数据int dtlrows=CollectionUtils.isEmpty(dtls)? 0:dtls.size();for(int i=0;i<dtlrows;i++) {Row row_dtl = sheet.createRow(5+i);Cell cell_dtl_0 = row_dtl.createCell(0);cell_dtl_0.setCellValue(dtls.get(i).getSkuId());Cell cell_dtl_1 = row_dtl.createCell(1);cell_dtl_1.setCellValue(dtls.get(i).getSkuName());Cell cell_dtl_2 = row_dtl.createCell(2);cell_dtl_2.setCellValue(dtls.get(i).getOrderCount());Cell cell_dtl_3 = row_dtl.createCell(3);cell_dtl_3.setCellValue(dtls.get(i).getOrderSum());Cell cell_dtl_4 = row_dtl.createCell(4);cell_dtl_4.setCellValue(dtls.get(i).getThreshold());Cell cell_dtl_5 = row_dtl.createCell(5);cell_dtl_5.setCellValue(dtls.get(i).getAvlTotal());}}//第二个sheet页   有几个写几个  跟上边一样private void outExcelSheet(Workbook wb, ShopNewDailyStockRspVo daily, List<ShopNewDailyStockOutRspVo> dtls) {//styleFont font = wb.createFont();font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);CellStyle titleCellStyle=wb.createCellStyle(); titleCellStyle.setFont(font); CellStyle listTitleCellStyle=wb.createCellStyle();listTitleCellStyle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);listTitleCellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);//sheetSheet sheet = wb.createSheet("sheet2名称");//row_titleRow row_title = sheet.createRow(0);//Excel从0开始 意思是第一行Cell cell_title = row_title.createCell(0);//第一列cell_title.setCellValue("XXXX");cell_title.setCellStyle(titleCellStyle);Row row_order_no = sheet.createRow(1);Cell cell_order_no = row_order_no.createCell(0);cell_order_no.setCellValue("日期时间也是一样: "+new SimpleDateFormat("yyyy-MM-dd").format(daily.getReportDate()).toString()+" 00:00:00"+" - "+new SimpleDateFormat("yyyy-MM-dd").format(daily.getReportDate()).toString()+" 23:59:59");//row_dtl_separatorRow row_dtl_separator = sheet.createRow(3);Cell cell_dtl_separator = row_dtl_separator.createCell(0);cell_dtl_separator.setCellValue("XXXXXXXX");//从这里开始就是获取数据了 表头Row row_dtl_title = sheet.createRow(4);Cell cell_dtl_title_0 = row_dtl_title.createCell(0);cell_dtl_title_0.setCellValue("xxxx");cell_dtl_title_0.setCellStyle(listTitleCellStyle);Cell cell_dtl_title_1 = row_dtl_title.createCell(1);cell_dtl_title_1.setCellValue("xxxx");cell_dtl_title_1.setCellStyle(listTitleCellStyle);Cell cell_dtl_title_2 = row_dtl_title.createCell(2);cell_dtl_title_2.setCellValue("xxxx");cell_dtl_title_2.setCellStyle(listTitleCellStyle);Cell cell_dtl_title_3 = row_dtl_title.createCell(3);cell_dtl_title_3.setCellValue("xxxxx");cell_dtl_title_3.setCellStyle(listTitleCellStyle);Cell cell_dtl_title_4 = row_dtl_title.createCell(4);cell_dtl_title_4.setCellValue("xxxxx");cell_dtl_title_4.setCellStyle(listTitleCellStyle);Cell cell_dtl_title_5 = row_dtl_title.createCell(5);cell_dtl_title_5.setCellValue("xxxxx");cell_dtl_title_5.setCellStyle(listTitleCellStyle);//循环获取数据int dtlrows=CollectionUtils.isEmpty(dtls)? 0:dtls.size();for(int i=0;i<dtlrows;i++) {Row row_dtl = sheet.createRow(5+i);Cell cell_dtl_0 = row_dtl.createCell(0);cell_dtl_0.setCellValue(dtls.get(i).getSkuId());Cell cell_dtl_1 = row_dtl.createCell(1);cell_dtl_1.setCellValue(dtls.get(i).getSkuName());Cell cell_dtl_2 = row_dtl.createCell(2);cell_dtl_2.setCellValue(dtls.get(i).getOrderCount());Cell cell_dtl_3 = row_dtl.createCell(3);cell_dtl_3.setCellValue(dtls.get(i).getOrderSum());Cell cell_dtl_4 = row_dtl.createCell(4);cell_dtl_4.setCellValue(dtls.get(i).getThreshold());Cell cell_dtl_5 = row_dtl.createCell(5);cell_dtl_5.setCellValue(dtls.get(i).getAvlTotal());}           }

可以 写在本类当中用this去调用
也可封装一个工具类可以直接调用
这就是最简单纯手工,创建excel,设置内容
不明白的可以下边评论我了 看到我会回复

java实现导出Excel多行表头复杂模板相关推荐

  1. java poi导出Excel表格(动态表头)

    HSSFWorkbook xssfWorkbook = new HSSFWorkbook(); //创建工作表对象Sheet sheet = xssfWorkbook.createSheet(); / ...

  2. java实现这个无表头空表格,《java程序导出excel表格是空白的没有数据?》 java怎么导入数据库...

    java程序导出excel表格是空白的没有数据? 看一下是否可以链接上数据库,或者查看一下链接的数据库是否有数据 java从数据库中导出excel poi 建议你使用pageoffice. java ...

  3. java poi 导出excel不能超过65536行

    java poi 导出excel不能超过65536行 报这个异常 Exception in thread "main" java.lang.IllegalArgumentExcep ...

  4. java 导入导出excel表格

    java 导入导出excel表格 业务上有需求上传excel表格并读取内容,本文记录一下该方法 表格导入 引入相应的工具包 <dependency><groupId>cn.af ...

  5. java实现导出excel表_java实现导出网页中的表格为Excel

    将网页中的table数据,导出到excel表格,可以使用java POI实现. java poi是java中操作excel的工具,支持excel的导入与导出,一般有三种形式: 1.HSSFWorkbo ...

  6. Java分页导出Excel文件

    Java分页导出Excel文件 1.开发微信小程序接入广告获取收益 技术: Springboot + mongodb + maven +Layui + thymeleaf 上一篇博客已经讲解了Java ...

  7. java 动态导出excel表单 无模板文件下载

    java 动态导出excel表单 无模板文件下载 public ResponseEntity<byte[]> exportStanding(@PathVariable Long signu ...

  8. java 动态导出excel表单 无模板本地生成

    java 动态导出excel表单 无模板本地生成 这里使用的是alibaba的公共类excelWriter,注意在pom文件中要引入easyExcel的依赖 public void exportExc ...

  9. java实现导出Excel的功能

    这篇文章主要为大家详细介绍了java实现导出Excel的功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 导出excel是咱Java开发的必备技能啦,之前项目有这个功能,现在将其独立出来,分享一 ...

最新文章

  1. 数据清洗指南完整分享
  2. mysql 分表后如何扩展_mysql扩展至分库分表
  3. servlet的一些简单理解
  4. 事半功倍:推荐系统Pre-train预训练方法
  5. 第五章 常用Lua开发库3-模板渲染
  6. angular5项目端口冲突之解决办法
  7. jmeter 登录用户并发压力测试案例_测试模型构建及场景用例设计
  8. java web启动socket_javaweb启动时启动socket服务端代码实现
  9. EFK6.3+kafka+logstash日志分析平台集群
  10. numpy实用技巧(一)
  11. CI框架 设置全局常量、全局变量
  12. php json转数组示例,php json转数组的例子
  13. hexo yilia 文章浏览量统计
  14. esp32测试wifi速率
  15. 根据股票涨跌用KMeans进行分类
  16. PDF文档太大怎么办?
  17. 基于Python的双USB摄像头实时预览保存软件
  18. 金蝶osf接口开发_GitHub - terminiter/osf-openstack-training
  19. Scanner基本用法及其实例
  20. 扫描二维码实现后台管理系统登录

热门文章

  1. hipaa_AIX 6.1安全功能:符合HIPAA的映射
  2. 【MACCMS】UA判断 展示判断
  3. mac os 10.10以上的开启端口转发-解决mac默认不开启1024以下端口权限问题
  4. 2020年市政方向-通用基础(施工员)考试题及市政方向-通用基础(施工员)考试平台
  5. 2020年必读的数学书籍——数学如何影响生活的方方面面?
  6. 如何判断邮箱号格式是否正确
  7. 基于JAVA无人售货机管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
  8. 第二十三天:EarTouch: Facilitating Smartphone Use for Visually Impaired People in Mobile and Public Scenar
  9. P2P投资理财项目“百强榜”今夏出炉
  10. 计算机屏幕黑的,为什么电脑显示屏黑了但是电脑正常