匯出Excel並自動彈出瀏覽器下載
阿新 • • 發佈:2019-01-25
/** * @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表單提交 彈出提示下載框