前言
快速实现poi生成并导出excel文件
代码是以spring boot项目为基础编写,spring mvc单体架构项目皆可使用,自行调整
一、导出excel2007
1.maven项目导包
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
2.gradle项目导包
compile group: 'org.apache.poi', name: 'poi', version: '4.1.2'
compile group: 'org.apache.poi', name: 'poi-ooxml', version: '4.1.2'
3.实现代码
//引入头文件
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.web.bind.annotation.GetMapping;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
/**
* 导出通讯录
* @param response
* @param params
* @return
*/
@GetMapping("/exportExcel")
public void exportExcel(HttpServletResponse response,HttpServletRequest request) {
try {
List<String> list= new ArrayList<>();
list.add("数据一");
list.add("数据二");
String cellTitle[] = { "标题"};
// 声明一个工作薄
XSSFWorkbook workBook = null;
workBook = new XSSFWorkbook();
// 生成一个表格
XSSFSheet sheet = workBook.createSheet();
workBook.setSheetName(0,"通讯录");
// 创建表格标题行 第一行
XSSFRow titleRow = sheet.createRow(0);
for(int i=0;i<cellTitle.length;i++){
titleRow.createCell(i).setCellValue(cellTitle[i]);
}
//插入需导出的数据
for(int i=0;i<list.size();i++){
XSSFRow row = sheet.createRow(i+1);
row.createCell(0).setCellValue(list.get(i));
}
//"attachment"设置Http响应头告诉浏览器下载这个附件
response.setHeader("Content-disposition", "attachment;Filename=" + "address_book" + ".xlsx");
//vnd.ms-excel和msexcel基本无区别,ms特指微软的office套件,格式稍微规范些
// response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setContentType("application/msexcel;charset=UTF-8");
OutputStream outputStream = response.getOutputStream();
workBook.write(outputStream);
outputStream.close();
}catch (Exception e){
logger.error("exportExcel===>,}"+e);
}
}
二、导出excel2003
1.maven项目导包
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
二、导出文件中文乱码问题
参考链接:
https://www.jianshu.com/p/d4a85d025768
三、附属知识
1.导出文件的其他格式
参考链接:
https://www.cnblogs.com/dingjiaoyang/p/5831049.html
总结
需要注意的点:
1.导出的文件后缀为xlsx时,只能使用导出excel2007,导出excel2003只支持后缀为xls格式的文件
2.前端请求时,不能使用ajax请求,使用ajax不会弹出下载框
ps:有错误欢迎指出