java web實現excel模版下載功能


這里面小小總結一下java web實現excel報表模版的下載。

貼核心代碼如下:

        public  String download() throws Exception
        {
//request,respose對象同樣可以通過其它方式獲取,Catalog是自定義的一個類
            HttpServletRequest request = Catalog.getRequest();
            HttpServletResponse response = Catalog.getResponse();
            final String comp_id = (String)request.getSession().getAttribute(
                    Constant.COMP_ID);
            HSSFWorkbook workbook = new HSSFWorkbook();
            loadStyle(workbook);
            HSSFSheet JobSheet = workbook.createSheet("jobDetials");
            produceJobSheet(workbook,JobSheet);
            String filename=comp_id+"_"+"dynamictable_report.xls";
//執行文件輸出
            runExcelFileExport(response,workbook,filename);                    
            return "";
        }
//------------------------------------------------------------------------------------------------------------------------------
        private void produceJobSheet(HSSFWorkbook workbook,HSSFSheet sheet) throws Exception {
            HSSFRow row = sheet.createRow(0);
            //Create the hard columns of header
            HSSFCell cell_emp = row.createCell(0);
            cell_emp.setCellStyle(arial_bold_style);
            cell_emp.setCellValue("EmployeeId");
            sheet.setColumnWidth(0, 6000);
            HSSFCell cell_name = row.createCell(1);
            cell_name.setCellStyle(arial_bold_style);
            cell_name.setCellValue("EmployeeName");
            sheet.setColumnWidth(1, 6000);
            HSSFCell cell_gradeId = row.createCell(2);
            cell_gradeId.setCellStyle(arial_bold_style);
            cell_gradeId.setCellValue("GlobleEEID");
            sheet.setColumnWidth(2, 6000);
            
                }
        }
//--------------------------------------------------------------------------------------------------------------------------
        private  static void runExcelFileExport(HttpServletResponse response,
                HSSFWorkbook wb,
                String filename) {
            try {
                ServletOutputStream sos = response.getOutputStream();
                ByteArrayOutputStream buffer = new ByteArrayOutputStream();
                wb.write(buffer);
                response.setContentType("application/vnd.ms-excel");
                response.setContentLength(buffer.size());
                response.setHeader("Content-Disposition", "attachment; filename="
                        + filename);
                response.setHeader("Pragma", "public");
                response.setHeader("Cache-Control", "max-age=0");
                sos.write(buffer.toByteArray());
                buffer.flush();
                sos.flush();
            } catch (IOException e){
                e.printStackTrace();
            }
        }

 

ok,到這個位置后台的三個主要的方法就完成了。

如果要實現web頁面的功能,當然需要一個jsp頁面,一個按鈕,按鈕點擊調用后台download方法。所以把這三個方法放在一個action,或者controller里面,或者直接是一個servlet就都可以實現了。 ps:

1. 通過HttpResponse定義的方法getOutputStream()可以獲得ServletOutputStream的實例, 這樣用戶就可以利用ServletOutputStream.write方法向輸出流中寫入返回頁面的內容. 或者寫入下載文件的內容。

2.那么為什么會以下載文件的形式出現呢?

response.setHeader("Content-Disposition", "attachment; filename="+ filename);核心是這里面的attchment。要確保這個參數的值,才能web頁面點擊按鈕過后,向輸出流中寫入的內容會下載文件的方式出現。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM