前台
window.open("?action=exportExcel&" + query); //query为表单序列化参数
后台
@RequestMapping(value = "", params = "action=exportExcel")
@ResponseBody
public void exportExcel(HttpServletResponse response, @ModelAttribute ZjylbVo zjylbVo) {
List<Map> dataList = zjylbService.select4ExportExcel(paramMap); //导出数据
String fileName = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())+".xls";
response.setHeader("Content-Disposition", "attachment;filename=" + fileName); // 设置文件的名字
//导出Excel模板
InputStream templateStream = this.getClass().getClassLoader().getResourceAsStream("/excel_template/expZjyExcelTemp.xls");
ExcelTool.export(response, templateStream, dataList);
}
public static void export(HttpServletResponse response, InputStream templateStream, List<Map<String, Object>> dataMapList) {
response.setContentType("application/vnd.ms-excel"); // 设置下载类型
String filename = (new SimpleDateFormat("yyyyMMddhhmmss").format(new Date()))+ ".xls";//设置文件的名字
response.setHeader("Content-Disposition", "attachment;filename=" + filename);
OutputStream os = null;
try {
os = response.getOutputStream();
new ExportDataToStream().exportXlsUseTemplate(dataMapList, templateStream, os);
} catch (IOException e) {
System.err.println(e.getMessage());
} finally {
try {
if (templateStream != null) {
templateStream.close();
}
if (os != null) {
os.close();
}
} catch (IOException e) {
System.err.println(e.getMessage());
}
}
}
public Map exportXlsUseTemplate(List<Map<String, Object>> lists, InputStream templateFileIs, OutputStream os) {
Map<String, String> ret = new HashMap<String, String>();
Map<String, Object> beans = new HashMap<String, Object>();
beans.put("lists", lists);
XLSTransformer transformer = new XLSTransformer();
try {
org.apache.poi.ss.usermodel.Workbook workbook = transformer.transformXLS(templateFileIs, beans);
workbook.write(os);
templateFileIs.close();
} catch (Exception e) {
log.error(e.getMessage());
ret.put("errormsg", "生成xls文件出错,请查看日志");
return ret;
}
return null;
}
Excel模板