java实现导出Excel多行表头复杂模板
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多行表头复杂模板相关推荐
- java poi导出Excel表格(动态表头)
HSSFWorkbook xssfWorkbook = new HSSFWorkbook(); //创建工作表对象Sheet sheet = xssfWorkbook.createSheet(); / ...
- java实现这个无表头空表格,《java程序导出excel表格是空白的没有数据?》 java怎么导入数据库...
java程序导出excel表格是空白的没有数据? 看一下是否可以链接上数据库,或者查看一下链接的数据库是否有数据 java从数据库中导出excel poi 建议你使用pageoffice. java ...
- java poi 导出excel不能超过65536行
java poi 导出excel不能超过65536行 报这个异常 Exception in thread "main" java.lang.IllegalArgumentExcep ...
- java 导入导出excel表格
java 导入导出excel表格 业务上有需求上传excel表格并读取内容,本文记录一下该方法 表格导入 引入相应的工具包 <dependency><groupId>cn.af ...
- java实现导出excel表_java实现导出网页中的表格为Excel
将网页中的table数据,导出到excel表格,可以使用java POI实现. java poi是java中操作excel的工具,支持excel的导入与导出,一般有三种形式: 1.HSSFWorkbo ...
- Java分页导出Excel文件
Java分页导出Excel文件 1.开发微信小程序接入广告获取收益 技术: Springboot + mongodb + maven +Layui + thymeleaf 上一篇博客已经讲解了Java ...
- java 动态导出excel表单 无模板文件下载
java 动态导出excel表单 无模板文件下载 public ResponseEntity<byte[]> exportStanding(@PathVariable Long signu ...
- java 动态导出excel表单 无模板本地生成
java 动态导出excel表单 无模板本地生成 这里使用的是alibaba的公共类excelWriter,注意在pom文件中要引入easyExcel的依赖 public void exportExc ...
- java实现导出Excel的功能
这篇文章主要为大家详细介绍了java实现导出Excel的功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 导出excel是咱Java开发的必备技能啦,之前项目有这个功能,现在将其独立出来,分享一 ...
最新文章
- 数据清洗指南完整分享
- mysql 分表后如何扩展_mysql扩展至分库分表
- servlet的一些简单理解
- 事半功倍:推荐系统Pre-train预训练方法
- 第五章 常用Lua开发库3-模板渲染
- angular5项目端口冲突之解决办法
- jmeter 登录用户并发压力测试案例_测试模型构建及场景用例设计
- java web启动socket_javaweb启动时启动socket服务端代码实现
- EFK6.3+kafka+logstash日志分析平台集群
- numpy实用技巧(一)
- CI框架 设置全局常量、全局变量
- php json转数组示例,php json转数组的例子
- hexo yilia 文章浏览量统计
- esp32测试wifi速率
- 根据股票涨跌用KMeans进行分类
- PDF文档太大怎么办?
- 基于Python的双USB摄像头实时预览保存软件
- 金蝶osf接口开发_GitHub - terminiter/osf-openstack-training
- Scanner基本用法及其实例
- 扫描二维码实现后台管理系统登录
热门文章
- hipaa_AIX 6.1安全功能:符合HIPAA的映射
- 【MACCMS】UA判断 展示判断
- mac os 10.10以上的开启端口转发-解决mac默认不开启1024以下端口权限问题
- 2020年市政方向-通用基础(施工员)考试题及市政方向-通用基础(施工员)考试平台
- 2020年必读的数学书籍——数学如何影响生活的方方面面?
- 如何判断邮箱号格式是否正确
- 基于JAVA无人售货机管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
- 第二十三天:EarTouch: Facilitating Smartphone Use for Visually Impaired People in Mobile and Public Scenar
- P2P投资理财项目“百强榜”今夏出炉
- 计算机屏幕黑的,为什么电脑显示屏黑了但是电脑正常