1. 程式人生 > >匯出Excel並自動彈出瀏覽器下載

匯出Excel並自動彈出瀏覽器下載

/**
     * @param names 儲存資料庫欄位名
     * @param displays 儲存資料庫欄位對應中文顯示
     * @param list 儲存從資料庫查詢出的資料資訊
     * @param response
     * 
     * @return 
     */
    public static void exportExcel(String[] names, String[] displays,
            List<Map<String, Object>> list, HttpServletResponse response)
            throws Exception {

        String fileName = "人員資訊";//檔名可從外部引數傳入
        response.setContentType("application/vnd.ms-excel");
        response.addHeader("Content-Disposition", "attachment;   filename=\""
                + new String((fileName).getBytes("GB2312"),"iso8859-1") + ".xls" + "\"");//解決檔名中文亂碼問題
        
        OutputStream os = response.getOutputStream();
        WritableWorkbook wwb = Workbook.createWorkbook(os);

        //建立excel的方法都大同小異
        // 新建一張表
        WritableSheet wsheet = wwb.createSheet("人員資訊", 0);

        // 設定表頭
        Label label = new Label(0, 0, "");
        for (int i = 0; i < names.length; i++) {
            label = new Label(i, 0, displays[i]);
            wsheet.addCell(label);
        }

        // 讀出資料
        for (int j = 0; j < list.size(); j++) {
            Map<String, Object> temp = list.get(j);
            for (int k = 0; k < names.length; k++) {
                label = new Label(k, (j + 1), temp.get(names[k]) == null ? "無"
                        : temp.get(names[k]).toString());
                wsheet.addCell(label);
            }
        }

        wwb.write();
        wwb.close();
        os.close();
        response.flushBuffer();
    }


試了幾次  直接呼叫都沒辦法彈出下載框  就在頁面上加了個form表單 用form表單提交

form表單的程式碼如下

<form action="" id="exportForm" method="post">


用js給action賦值

var url="/Prison-portlet/ExportExcelServlet?"+data;//可以帶上servlet所需要的引數跳轉
    $("#exportForm").attr("action",url);
    $("#exportForm").submit();


到此為止  匯出Excel並實現下載的功能就完全實現了

以下是效果圖  點選右上角的Excel圖示  form表單提交  彈出提示下載框