POI导出

XSSFWorkbook 对应Excel2007版本及以上

HSSFWorkbook 对应Excel2003版本

还要注意一点,不要用Swagger-ui测试导出的表格,这样的表格文件都是损坏的。

1.导入依赖

  1. <dependency>
  2. <groupId>org.apache.poi</groupId>
  3. <artifactId>poi</artifactId>
  4. <version>3.16</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.apache.poi</groupId>
  8. <artifactId>poi-ooxml</artifactId>
  9. <version>3.16</version>
  10. </dependency>

2.建表

在这里我有个习惯,就是喜欢把自己做好表头的Excel文件读取到程序中,然后再装填数据。

所以,我很少写更改表格样式的代码。

  1. @Override
  2. public XSSFWorkbook createMemberExcel(List idList, XSSFWorkbook excel) {
  3. List<Member> memberList= (List<Member>) this.listByIds(idList);
  4. int sheetNum = 0;
  5. XSSFSheet sheet = excel.getSheetAt(sheetNum);
  6. int rowNum = 1;
  7. for(Member member:memberList) {
  8. XSSFRow row = sheet.createRow(rowNum++);
  9. int cellNum = 0;
  10. XSSFCell cell = row.createCell(cellNum++);
  11. cell.setCellValue(member.getNum());
  12. cell = row.createCell(cellNum++);
  13. cell.setCellValue(member.getName());
  14. cell = row.createCell(cellNum++);
  15. String sex = member.getSex()== true ? "女" : "男";
  16. cell.setCellValue(sex);
  17. cell = row.createCell(cellNum++);
  18. if(null != member.getBirth()) {
  19. DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
  20. cell.setCellValue(member.getBirth().format(formatter));
  21. }
  22. cell = row.createCell(cellNum++);
  23. String type = member.getType()==true ? "教职工" : "学生";
  24. cell.setCellValue(type);
  25. cell = row.createCell(cellNum++);
  26. cell.setCellValue(member.getDep());
  27. cell = row.createCell(cellNum++);
  28. cell.setCellValue(member.getPro());
  29. cell = row.createCell(cellNum++);
  30. cell.setCellValue(member.getTeam());
  31. cell = row.createCell(cellNum++);
  32. cell.setCellValue(member.getNational());
  33. cell = row.createCell(cellNum++);
  34. cell.setCellValue(member.getOrigin());
  35. cell = row.createCell(cellNum++);
  36. cell.setCellValue(member.getIdCard());
  37. cell = row.createCell(cellNum++);
  38. cell.setCellValue(member.getJoinOrganization());
  39. cell = row.createCell(cellNum++);
  40. if(null != member.getJoinDate()) {
  41. DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
  42. cell.setCellValue(member.getJoinDate().format(formatter));
  43. }
  44. }
  45. return excel;
  46. }

3.文件流导出

  1. private void download(String filename, XSSFWorkbook excel,HttpServletResponse response) throws IOException {
  2. response.setHeader("Access-Control-Expose-Headers","Content-Disposition");
  3. response.setHeader("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml");
  4. response.setHeader("Content-Disposition", "attachment;filename="+ URLEncoder.encode(filename, "utf-8"));
  5. OutputStream outputStream = response.getOutputStream();
  6. excel.write(outputStream);
  7. outputStream.flush();
  8. outputStream.close();
  9. /*FileOutputStream fos = new FileOutputStream("1.xlxs");
  10. excel.write(fos);
  11. fos.flush();
  12. fos.close();*/
  13. }

23.POI导出的更多相关文章

  1. 使用POI导出Word(含表格)的实现方式及操作Word的工具类

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...

  2. poi导出excel

    Java使用poi组件导出excel报表,能导出excel报表的还可以使用jxl组件,但jxl想对于poi功能有限,jxl应该不能载excel插入浮动层图片,poi能很好的实现输出excel各种功能, ...

  3. POI导出excel的简单demo

    目前使用过两种导出excel的方式,一种是如题所示的使用POI的方式进行数据的导出,这种方式一般只有在处理比较多的数据或者说需要导出的excel表格中有图片之类的需要特殊处理的文件的时候使用:还有一种 ...

  4. [转载]poi导出excel,可以自定义保存路径

    poi导出excel比js导出excel安全性更好,在使用poi导出excel时,先要导入poi-3.5-FINAL-20090928.jar包到你项目的lib目录下,我这里选择是3.5版的 1.ac ...

  5. POI导出EXCEL经典实现

    1.Apache POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对Microsoft Office格式档案读和写的功能. .NET的开发人员则 ...

  6. Java POI 导出EXCEL经典实现 Java导出Excel

    转自http://blog.csdn.net/evangel_z/article/details/7332535 在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者 ...

  7. poi导出word

    最近做了个poi导出word的功能 下面是代码: 一个可以参考的例子: package com.lzb.crm.web; import java.io.FileOutputStream; import ...

  8. POI导出大量数据的简单解决方案(附源码)-Java-POI导出大量数据,导出Excel文件,压缩ZIP(转载自iteye.com)

    说明:我的电脑 2.0CPU 2G内存 能够十秒钟导出 20W 条数据 ,12.8M的excel内容压缩后2.68M 我们知道在POI导出Excel时,数据量大了,很容易导致内存溢出.由于Excel ...

  9. java中使用poi导出excel表格数据并且可以手动修改导出路径

    在我们开发项目中,很多时候会提出这样的需求:将前端的某某数据以excel表格导出,今天就给大家写一个简单的模板. 这里我们选择使用poi导出excel: 第一步:导入需要的jar包到 lib 文件夹下

随机推荐

  1. 1.Vue.js的常用指令

      Vue.js介绍 Vue.js是当下很火的一个JavaScript MVVM库,它是以数据驱动和组件化的思想构建的.相比于Angular.js,Vue.js提供了更加简洁.更易于理解的API,使得 ...

  2. c#中日期的处理

    DateTime.Now.ToShortDateString()//只取日期DateTime.Now.ToLongTimeString();//只取时间搞定DateTime.Now.ToShortTi ...

  3. Java ScheduledExecutorService源码分析

    Java 定时任务可以用Timer + TimerTask来做,或者使用ScheduledExecutorService,使用ScheduledExecutorService有两个好处: 1. 如果任 ...

  4. java常用API之Calendar类

    Calendar是日历类,该类将所有可能用到的时间信息封装为静态成员变量,方便获取. Calendar为抽象类,由于语言敏感性,Calendar类在创建对象时并非直接创建,而是通过静态方法创建,将语言 ...

  5. git 创建远程版本库(亲测有效)

    一.github远程版本库 1.创建SSH Key(windows)   ssh-keygen -t rsa -C "youremail@example.com"   2.连接版本 ...

  6. asp.net中<input type=button>无法调用后台函数

    例如:用<input id="bt1" type="button" runat="server" Onclick="btnL ...

  7. Flowchart

    1. 工具可使用 https://www.processon.com 2.

  8. Fragstats:使用R软件读取frag78b.asc文件

    Fragstats中,有一个用于熟悉Fragstats软件的demon,在tutorial中的1种,有reg78b.asc文件,其文件内容是包含了山歌图像的行数和列数以及分辨率大小等基本信息. 采用R ...

  9. 【起航计划 035】2015 起航计划 Android APIDemo的魔鬼步伐 34 App->Service->Local Service Controller

    Local Service Controller 是将LocalService当作“Started”Service来使用,相对于”Bound” Service 来说,这种模式用法要简单得多,Local ...

  10. matlab练习程序(结构张量structure tensor)

    根据结构张量能区分图像的平坦区域.边缘区域与角点区域. 此算法也算是计算机科学最重要的32个算法之一了.链接的文章中此算法名称为Strukturtensor算法,不过我搜索了一下,Strukturte ...