spring boot使用AbstractXlsView导出excel
来源:互联网
一、maven依赖jar包
<dependency>
<groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.14</version> </dependency>
1
2
3
4
5
二、导出view
public class ExportMemberVo {
private String name; private Integer gender; private String idCard; private String bankNo; private String bankName; private String phone; /** * 性别处理 */ public String getGender() { return gender == 0 ? "男" : "女"; } /****为了节省篇幅,省略setter/getter/constructor****/ }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
三、导出Excel核心处理代码,继承自AbstractXlsView ,并实现buildExcelDocument
import export.entity.ExportMemberVo;
import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.ss.usermodel.*; import org.springframework.web.servlet.view.document.AbstractXlsView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.net.URLEncoder; import java.util.List; import java.util.Map; /** * @Author Kent.Wang * @Date 2017/6/26 */ public abstract class ExcelView extends AbstractXlsView { @Override protected void buildExcelDocument(Map<String, Object> map, Workbook workbook, HttpServletRequest request, HttpServletResponse response) throws Exception { String excelName = map.get("name").toString() + ".xls"; response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(excelName,"utf-8")); response.setContentType("application/ms-excel; charset=UTF-8"); response.setCharacterEncoding("UTF-8"); @SuppressWarnings("unchecked") List<ExportMemberVo> list = (List<ExportMemberVo>) map.get("members"); Sheet sheet = workbook.createSheet("User Detail"); sheet.setDefaultColumnWidth(30); CellStyle style = workbook.createCellStyle(); Font font = workbook.createFont(); font.setFontName("Arial"); style.setFillForegroundColor(HSSFColor.BLUE.index); style.setFillPattern((short) 1); font.setBold(true); font.setColor(HSSFColor.WHITE.index); style.setFont(font); Row header = sheet.createRow(0); header.createCell(0).setCellValue("姓名"); header.getCell(0).setCellStyle(style); header.createCell(1).setCellValue("性别"); header.getCell(1).setCellStyle(style); header.createCell(2).setCellValue("手机号"); header.getCell(2).setCellStyle(style); header.createCell(3).setCellValue("身份证号"); header.getCell(3).setCellStyle(style); header.createCell(4).setCellValue("银行卡号"); header.getCell(4).setCellStyle(style); int rowCount = 1; for (ExportMemberVo user : list) { Row userRow = sheet.createRow(rowCount++); userRow.createCell(0).setCellValue(user.getName()); userRow.createCell(1).setCellValue(user.getGender()); userRow.createCell(2).setCellValue(user.getPhone()); userRow.createCell(3).setCellValue(user.getIdCard()); userRow.createCell(4).setCellValue(user.getBankNo()); } } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
四、controller代码
@RequestMapping(value = "", method = RequestMethod.GET)
public ModelAndView download() { List<ExportMemberVo> list = new ArrayList<ExportMemberVo>(); for (int i = 0; i < 5; i++) { ExportMemberVo exportMemberVo = new ExportMemberVo(); exportMemberVo.setName("Kent" + i); @SuppressWarnings("unchecked") int gender = ThreadLocalRandom.current().nextInt(0, 2); exportMemberVo.setGender(gender); exportMemberVo.setPhone("182xxxxxxxx"); exportMemberVo.setBankName("建设银行"); list.add(exportMemberVo); } Map<String, Object> map = new HashMap<String, Object>(); map.put("members", list); map.put("name", "魅力城市"); ExcelView excelView = new UserInfoExcelView(); return new ModelAndView(excelView, map); }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
一、maven依赖jar包
<dependency>
<groupId>org.apache.poi