版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36675996/article/details/79884377
编写步骤:
1.写一个excel模板
topicMap为后台Map中的key值,value值为一个list,在这里进行遍历;
2.在webapp下建一个文件夹,将该模板放入;
3.上代码
我是用的springMvc
@RequestMapping(value = "xxxxxxx")
public void exportByYjfx(HttpServletResponse response, HttpServletRequest request)
throws FileNotFoundException {
// 文件根路径
String fileRootPath = request.getSession().getServletContext().getRealPath("/excelTemplate");
// 文件名称
String fileName = "tjtrFsmd.xls";
// 内容
Map<String, Object> bean = new HashMap<String, Object>();
@SuppressWarnings("unchecked")
List<对象> xxx = (List<对象>)
bean.put("topicMap", 你需要往里填充的数据);
String fileNameS;
fileNameS = "导出名字.xls";
// 设置sheet页名称
String sheetName = "名称";
downFile(response, bean, fileRootPath, fileName, fileNameS, sheetName);
}
// 文件下载
private void downFile(final HttpServletResponse response, Map<String, Object> bean, String fileRootPath,
String fileName, String fileNameS, String sheetName)
throws FileNotFoundException {
if (bean != null) {
XLSTransformer transformer = new XLSTransformer();
InputStream in = new FileInputStream(new File(fileRootPath + File.separator + fileName));
HSSFWorkbook workbook;
try {
workbook = (HSSFWorkbook) transformer.transformXLS(in, bean);
Sheet sheet = workbook.getSheetAt(0);
// 设置sheet页名称
workbook.setSheetName(0, sheetName);
/**合并单元格需要的逻辑
// 起始行
int f = 1;
// 结束行
int g = 0;
sheet.addMergedRegion(new CellRangeAddress(f, g, i, i));//合并单元格的函数,我把我的逻辑删掉了,按情况进行合并
*/
try {
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(fileNameS.getBytes("gb2312"), "ISO8859_1"));
workbook.write(response.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
} catch (ParsePropertyException e1) {
e1.printStackTrace();
} catch (InvalidFormatException e1) {
// TODO 自动生成的 catch 块
e1.printStackTrace();
}
}
}
搞定!