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的名字一樣,否則就出錯。
僅此記錄