天天看點

關于jsp頁面轉換成excel格式下載下傳遇到問題及解決

jsp頁面轉成excel格式的實作思路:

1.使用poi包:poi-bin-3.9-20121203

 下載下傳連接配接位址:http://www.apache.org/dyn/closer.cgi/poi/release/bin/poi-bin-3.9-20121203.tar.gz

  import org.apache.poi.hssf.usermodel.*;

  這個包可以幫助實作下載下傳excel模版的設計,簡單易用,功能也非常強大。

1   HSSFWorkbook workBook = new HSSFWorkbook();//是操作Excel2003的版本,擴充名是xls
2 
3   HSSFSheet sheet = workBook.createSheet();//建立工作簿
4 
5   HSSFRow row1 = sheet.createRow(1);//建立一行
6 
7   HSSFCell cell0 = row1.createCell(0);//建立單元格
8 
9   cell0.setCellValue("對賬單ID:");//給單元格指派      

2.将建立的excel文檔轉換成需要輸出的流:可以是檔案流放在硬碟中,也可以是輸出流輸出到浏覽器供下載下傳。  ◆  檔案流:FileOutputStream

1         FileOutputStream fos = new FileOutputStream("F://workbook.xls");
2         workBook.write(fos);
3         fos.close();      

  ◆  輸出流 :response.getOutputStream()

1       response.reset();
2         response.setContentType("application/vnd.ms-excel;charset=gbk");
3         response.setHeader("Content-Disposition", "attachment;filename=account.xls");
4         OutputStream out = response.getOutputStream();
5         workBook.write(out);
6         out.close();        

  ◆ tip:

    *response.reset();清除首部的空白行

         * getResponse的getWriter()方法連續兩次輸出流到頁面的時候,第二次的流會包括第一次的流,

         * 是以可以使用response.reset或者resetBuffer的方法。

         * resetBuffer方法與reset方法的差別是,頭和狀态碼沒有清除。

         如果發現這樣設定後浏覽器端并沒有彈出【檔案另存為】選擇路徑視窗,請檢查下前面代碼是否出現:

  1.response.setContentType("text/html;charset=UTF-8");//設定編碼格式

      2.PrintWriter out = response.getWriter();導緻無法确定輸出流

3、excel檔案名為中文時亂碼或者出現未知檔案類型錯誤時,考慮用URLEncoder對檔案名進行轉碼

關于jsp頁面轉換成excel格式下載下傳遇到問題及解決
1         String name = java.net.URLEncoder.encode(fileName, "utf-8");
2         response.setContentType("application/vnd.ms-excel;charset=utf-8");
3         response.setHeader("Content-Disposition", "attachment;filename="+name.toString()+".xls"); 
4         OutputStream out = response.getOutputStream();
5         workBook.write(out);
6         out.close();           

  

繼續閱讀