--------------------------------------------方式一(新)-----------------------------------------------------------------
这个导出excel是需要excel模板文件,这个方式的好处是可以自定义excel的表头,方式如下:
1.复制该工具类
import net.sf.jxls.exception.ParsePropertyException; import net.sf.jxls.transformer.XLSTransformer; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.util.List; import java.util.Map; public class ExcelTemplateUtils { /** * * @param filename 导出的文件名 * @param dataMap List的集合 * @param model * @param response * @throws IOException */ @SuppressWarnings("rawtypes") public void export(String filename, Map<String,List>dataMap, String model, HttpServletResponse response){ XLSTransformer transformer = new XLSTransformer(); HSSFWorkbook workbook; InputStream in; try { //此方法需要类与模板放在同一目录下 in = Thread.currentThread().getContextClassLoader().getResourceAsStream(model); // in = getClass().getResourceAsStream(model); workbook = transformer.transformXLS(in, dataMap); outExcel(workbook, response, filename); } catch (Exception e) { e.printStackTrace(); } } protected void outExcel(HSSFWorkbook workbook, HttpServletResponse response, String filename) throws UnsupportedEncodingException { response.setContentType("application ns.ms-excel"); response.setHeader("Expires", "0"); response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0"); response.setHeader("Pragma", "public"); response.setHeader("Content-disposition", "attachment;filename="+new String(filename.getBytes("utf-8"),"iso-8859-1")+".xls"); try { workbook.write(response.getOutputStream()); } catch (ParsePropertyException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
2.自定义excel模板文件:(不能插入excel文件,所以截图了,如图所示)
3.导出请求代码:
@GetMapping("/export")
public void excelTemplate(String startDate, String endDate, String email, HttpServletResponse response) {
FinancialReq req = new FinancialReq();
req.setEmail(email);
req.setStartDate(startDate);
req.setEndDate(endDate);
List list = adminFinancialService.findExcelList(req);
Map<String, List> beanParams = new HashMap<String, List>();
beanParams.put("financialSummary", list);
ExcelTemplateUtils excel = new ExcelTemplateUtils();
StringBuilder title = new StringBuilder();
title.append("财务统计报表");
title.append(DateUtils.formatDate(new Date(),"yyyyMMddhhmmss"));
excel.export(title.toString(), beanParams, "template_financialSummary.xls", response);
}