版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
添加依赖
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.10.1</version>
</dependency>
创建导出excel的工具类 ExportExcelUtil
package com.clc.util;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.joda.time.DateTime;
public class ExportExcelUtil{
public static HSSFWorkbook exportXls(List<Map<String,Object>> list,String title) throws Exception {
// 读取项目根目录中的模板
//File file = new File("E:\\template.xls"); 电脑硬盘上的模板,,一般模板都在项目里
HSSFWorkbook workbook = new HSSFWorkbook();
// 创建Excel的sheet
HSSFSheet sheet = workbook.createSheet(title);
sheet.setForceFormulaRecalculation(true);
// 根据模板中表达式位置, 修改对应单元格的值
int num = 0;
HSSFRow first= sheet.createRow(0);
for(String key: list.get(0).keySet()) {
first.createCell(num).setCellValue(key);
num++;
}
// 填充数据
int rowNum = 1;
for (Map<String, Object> map : list) {
HSSFRow row = sheet.createRow(rowNum);
int colNum=0;
for (String key : map.keySet()) {
if(map.get(key) instanceof Date) {
row.createCell(colNum).setCellValue(new DateTime(map.get(key)).toString(Constants.DATE_TIME));
}else {
row.createCell(colNum).setCellValue(map.get(key).toString());
}
colNum++;
}
rowNum++;
}
//FileOutputStream out = new FileOutputStream("D:"+File.separator+title+".xls");
//workbook.write(out);
//out.close();
return workbook;
}
}
在Controller方法中调用
@RequestMapping("exportUser")
@RequiresRoles(value= {"admin"})
public void exportUser(HttpServletResponse response) throws Exception {
List<Map<String, Object>> list = userService.selectOnExp();
HSSFWorkbook workbook = ExportExcelUtil.exportXls(list, "user");
workbook.write(response.getOutputStream());
response.setHeader("Content-Disposition", "attachment;filename=user.xls");
}