1 public static void exportExcel(String templateFileName, Map beans,
2 HttpServletRequest request,HttpServletResponse response){
3 try {
4 response.setContentType("application/vnd.ms-excel");
5 response.setHeader("Content-Disposition", "attachment; filename=excel.xls");
6 XLSTransformer transformer = new XLSTransformer();
7
8
9 InputStream is = new BufferedInputStream(
10 new FileInputStream(RequestUtil.getRealPath(request, templateFileName)));
11
12 HSSFWorkbook workbook = transformer.transformXLS(is, beans);
13 OutputStream os = response.getOutputStream();
14 workbook.write(os);
15 is.close();
16 os.flush();
17 os.close();
18 } catch (Exception e) {
19 e.printStackTrace();
20 }
21 }
通过服务器端获取模版文件的绝对路径,然后通过response来输出到页面,就可以实现导出,这个比poi等等都简单很多,用起来比较舒服。
服务器路径的获取:request.getSession().getServletContext().getRealPath(name);
这样就可以获得web目录下某个文件的服务器端路劲。
今天在使用的时候发现一个问题,就是在使用表达式的时候有一个地方需要注意
像上面的这个表达式就会出错,这里也没有看源代码,具体不是很清楚,但是看了一下日志,发现,后面的这个item也被替换了,所以觉得这个可能是jxls的bug或者是作者偷懒搞的。
以后只需要注意字段名不能跟bean的名字一样,否则就出错。
仅此记录