POI导出表格
1. 引入依赖
<!--poi导出start-->
<!-- excel -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.14</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.14</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.14</version>
</dependency>
<!--poi导出end-->
2. Excel导出核心代码
2.1 核心代码导入包
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;
import java.util.Map;
import java.util.Set;
2.2 核心util代码
public class ExcelUtils {
/**
* @param response
* @param fileName excel文件名
* @param headMap 表头map
* @param dataList 表格数据
*/
public static void exportXlsx(HttpServletResponse response, String fileName,
Map<String, String> headMap, List<Map<String, Object>> dataList) {
Workbook workbook = exportXlsx(fileName, headMap, dataList);
response.setContentType("application/binary;charset=ISO8859_1");
OutputStream outputStream = null;
try {
outputStream = response.getOutputStream();
String fn = new String(fileName.getBytes(), "ISO8859_1");
response.setHeader("Content-disposition", "attachment; filename=" + fn + ".xlsx");
workbook.write(outputStream);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (outputStream != null) {
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* 导出数据
*
* @param headMap
* @param dataList
*/
public static Workbook exportXlsx(String sheetName, Map<String, String> headMap, List<Map<String, Object>> dataList) {
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet(sheetName);
int rowIndex = 0, columnIndex = 0;
Set<String> keys = headMap.keySet();
//表头
Row row = sheet.createRow(rowIndex++);
for (String key : keys) {
Cell cell = row.createCell(columnIndex++);
cell.setCellValue(headMap.get(key));
}
//内容
if (dataList != null && !dataList.isEmpty()) {
for (Map<String, Object> map : dataList) {
row = sheet.createRow(rowIndex++);
columnIndex = 0;
for (String key : keys) {
Cell cell = row.createCell(columnIndex++);
setCellValue(cell, map.get(key));
}
}
}
return workbook;
}
private static void setCellValue(Cell cell, Object obj) {
if (obj == null) {
return;
}
if (obj instanceof String) {
cell.setCellValue((String) obj);
} else {
cell.setCellValue(obj.toString());
}
}
}
2.3 Controller表格导出实现
package com..自己的包...controller;
import com.zy.checkdata.util.ExcelUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
* @Author: Apollo
* @Date: 2020/10/9 10:37
* @Description:
*/
@RestController
public class ExcelController {
@GetMapping("/excel")
public String exportDomain(HttpServletResponse repsonse) {
//列头名
Map<String, String> excelTitleMap = new LinkedHashMap<String, String>();
excelTitleMap.put("id", "id");
excelTitleMap.put("name", "name");
excelTitleMap.put("sex", "sex");
//列值
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(5);
Map<String, Object> map = new LinkedHashMap<String, Object>();
map.put("id", "1");
map.put("name", "小红");
map.put("sex", "女");
Map<String, Object> map1 = new LinkedHashMap<String, Object>();
map1.put("id", "2");
map1.put("name", "小蓝");
map1.put("sex", "男");
list.add(map);
list.add(map1);
ExcelUtils.exportXlsx(repsonse, "fileName", excelTitleMap, list);
return null;
}
}
3. Excel导出结果展示
3.1 导出链接
http://localhost:8080/excel
3.2 导出结果
就先说到这
\color{#008B8B}{ 就先说到这}
就先说到这
在下
A
p
o
l
l
o
\color{#008B8B}{在下Apollo}
在下Apollo
一个爱分享
J
a
v
a
、生活的小人物,
\color{#008B8B}{一个爱分享Java、生活的小人物,}
一个爱分享Java、生活的小人物,
咱们来日方长,有缘江湖再见,告辞!
\color{#008B8B}{咱们来日方长,有缘江湖再见,告辞!}
咱们来日方长,有缘江湖再见,告辞!