POI导出

XSSFWorkbook 对应Excel2007版本及以上

HSSFWorkbook 对应Excel2003版本

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

1.导入依赖

<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.16</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.16</version>
</dependency>

2.建表

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

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

@Override
public XSSFWorkbook createMemberExcel(List idList, XSSFWorkbook excel) {
List<Member> memberList= (List<Member>) this.listByIds(idList);
int sheetNum = 0;
XSSFSheet sheet = excel.getSheetAt(sheetNum);
int rowNum = 1;
for(Member member:memberList) {
XSSFRow row = sheet.createRow(rowNum++);
int cellNum = 0;
XSSFCell cell = row.createCell(cellNum++);
cell.setCellValue(member.getNum());
cell = row.createCell(cellNum++);
cell.setCellValue(member.getName());
cell = row.createCell(cellNum++);
String sex = member.getSex()== true ? "女" : "男";
cell.setCellValue(sex);
cell = row.createCell(cellNum++);
if(null != member.getBirth()) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
cell.setCellValue(member.getBirth().format(formatter));
}
cell = row.createCell(cellNum++);
String type = member.getType()==true ? "教职工" : "学生";
cell.setCellValue(type);
cell = row.createCell(cellNum++);
cell.setCellValue(member.getDep());
cell = row.createCell(cellNum++);
cell.setCellValue(member.getPro());
cell = row.createCell(cellNum++);
cell.setCellValue(member.getTeam());
cell = row.createCell(cellNum++);
cell.setCellValue(member.getNational());
cell = row.createCell(cellNum++);
cell.setCellValue(member.getOrigin());
cell = row.createCell(cellNum++);
cell.setCellValue(member.getIdCard());
cell = row.createCell(cellNum++);
cell.setCellValue(member.getJoinOrganization());
cell = row.createCell(cellNum++);
if(null != member.getJoinDate()) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
cell.setCellValue(member.getJoinDate().format(formatter));
}
}
return excel;
}

3.文件流导出

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

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. SpringBoot | 第三十四章:CXF构建WebService服务

    前言 上一章节,讲解了如何使用Spring-WS构建WebService服务.其实,创建WebService的方式有很多的,今天来看看如何使用apache cxf来构建及调用WebService服务. ...

  2. Django(5) session登录注销、csrf及中间件自定义、django Form表单验证(非常好用)

    一.Django中默认支持Session,其内部提供了5种类型的Session供开发者使用: 数据库(默认) 缓存 文件 缓存+数据库 加密cookie 1.数据库Session 1 2 3 4 5 ...

  3. 进程和程序(Process and Program)

    原出处:http://oss.org.cn/kernel-book/ch04/4.1.htm ----------------------------------个人理解分割线------------ ...

  4. 跨源资源共享(CORS)

    一.跨源的定义一个“源”有三部分组成:协议.域名.端口.任一部分不一致即为跨源.比如:(http,example.com,80)和(https,example.com,443)就是不同的源.   二. ...

  5. html5 填表 表单 input output 与表单验证

    1.<output>     Js计算结果 <form oninput="res.value = num1.valueAsNumber*num2.valueAsNumber ...

  6. spring mvc&mybatis搭配使用心得

    请求参数不多时控制器方法使用@RequestParam或@PathVariable接收参数即可. 请求参数过多时使用@RequestParam指定一个map接受参数即可,mybatis查询时可以直接作 ...

  7. java面试之----堆(heap)、栈(stack)和方法区(method)

    JAVA的JVM的内存可分为3个区:堆(heap).栈(stack)和方法区(method)也叫静态存储区. 堆区: 1.存储的全部是对象,每个对象都包含一个与之对应的class的信息.(class的 ...

  8. Azure 9 月新发布

    亲爱的小伙伴们, 我们很高兴向您宣布以下新功能与相关调整,欢迎关注与使用. 1. SQL 数据库弹性池  2. 存储指标更新 3. SQL 数据库 P15 4. Azure 高级存储 5. Wosig ...

  9. mybatis开发dao的方式

    mybatis基于传统dao的开发方式 第一步:开发接口 public interface UserDao { public User getUserById(int id) throws Excep ...

  10. Linux --防火墙(一)

    基本组成 表: filter:用来对数据包进行过滤,根据具体的规则要求决定如何处理一个数据包.表内包含三个链,即INOUT.FORWARD.OUTPUT nat表:主要用来修改数据包的IP地址.端口号 ...