和导入一样,先引入两个poi的jar包
<!--poi-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.0</version>
</dependency>
然后上代码
/**
* 导出excel表格
* 在excel表中,无论是行还是列都是从0开始
* @param response
* @return
*/
@GetMapping("/exportExcel")
public Map<String, Object> exportExcel(HttpServletResponse response) throws IOException {
/**
* 实际工作中,要导出的数据都是从数据库中取出来的,
* 肯定是根据前端传过来的某个查询条件去查出一个集合,然后导出
*/
List<Student> sList = new ArrayList<>();
for (int i = 0; i < 6; i++) {
// 创建一个类,用于模拟数据
Student s = new Student();
s.setName("666==="+i);
s.setGender("男");
sList.add(s);
}
//创建HSSFWorkbook对象(excel的文档对象)
HSSFWorkbook wb = new HSSFWorkbook();
//建立新的sheet对象(excel的表单)
HSSFSheet sheet = wb.createSheet("测试表");
// 1、获取样式
CellStyle cellStyle = wb.createCellStyle();
//2、 给样式设置对齐方式(水平对齐)
cellStyle.setAlignment(HorizontalAlignment.CENTER);
//在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个
HSSFRow row1 = sheet.createRow(0);
//创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个
HSSFCell cell = row1.createCell(0);
//设置单元格内容
cell.setCellValue("学生中考考试信息表");
//3.设置单元格样式居中
cell.setCellStyle(cellStyle);
//合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列
sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 3));
//在sheet里创建第二行
HSSFRow row2 = sheet.createRow(1);
//创建单元格并设置单元格内容
row2.createCell(0).setCellValue("姓名");
row2.createCell(1).setCellValue("班级");
row2.createCell(2).setCellValue("地址");
row2.createCell(3).setCellValue("手机号");
// 判断要导出的数据是否为空,不为空遍历集合
if(null!=sList){
int j = 2;
for (int i = 0; i <sList.size() ; i++) {
//在sheet里创建第三行,按照表头,添加数据
HSSFRow row3 = sheet.createRow(j);
//创建第三行,第一个单元格、
row3.createCell(0).setCellValue(sList.get(i).getName());
//第二个单元格
row3.createCell(1).setCellValue(sList.get(i).getGender());
j++;
}
}
//输出Excel文件
OutputStream output = response.getOutputStream();
response.reset();
response.setHeader("Content-disposition", "attachment; filename=details.xls");
response.setContentType("application/msexcel");
wb.write(output);
output.close();
//@TODO
return null;
}
你必须努力奔跑,才能留在原地。