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 }
通過(guò)服務(wù)器端獲取模版文件的絕對(duì)路徑,然后通過(guò)response來(lái)輸出到頁(yè)面,就可以實(shí)現(xiàn)導(dǎo)出,這個(gè)比poi等等都簡(jiǎn)單很多,用起來(lái)比較舒服。
服務(wù)器路徑的獲取:request.getSession().getServletContext().getRealPath(name);
這樣就可以獲得web目錄下某個(gè)文件的服務(wù)器端路勁。
今天在使用的時(shí)候發(fā)現(xiàn)一個(gè)問(wèn)題,就是在使用表達(dá)式的時(shí)候有一個(gè)地方需要注意
像上面的這個(gè)表達(dá)式就會(huì)出錯(cuò),這里也沒(méi)有看源代碼,具體不是很清楚,但是看了一下日志,發(fā)現(xiàn),后面的這個(gè)item也被替換了,所以覺(jué)得這個(gè)可能是jxls的bug或者是作者偷懶搞的。
以后只需要注意字段名不能跟bean的名字一樣,否則就出錯(cuò)。
僅此記錄