本文實例為大家分享了java web將數據導出為Excel格式文件的具體代碼,供大家參考,具體內容如下
1、jsp代碼
<input type="button" class="btn btn-info" onclick="getVerExcel();" value="導出為Excel文件" />
2、js代碼
1
2
3
4
|
function getVerExcel() { window.location.href = '/pms/jsp/version/getPrdVerListExcel?page=' + $( "#getPage" ).html() + '&key=' + $( "#select" ).val(); } |
3、java代碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
/** * * Purpose :將產品版本列表導出為Excel文件 * @param req * 請求 * @param resp * 應答 * @param page * 當前頁數 * @param key * 查詢條件 * @return */ @RequestMapping("getPrdVerListExcel") public void getExcel(HttpServletRequest req, HttpServletResponse resp, Integer page, String key) { // 設置文件的mime類型 resp.setContentType("application/vnd.ms-excel"); // 得到所有的數據 List< Version > verList = prdVersionSer.getAllPrdVersion(key); // 若沒有數據,則給用戶提示 if (verList.size() == 0) { req.setAttribute("getFileMsg", "沒有符合條件的信息!"); req.setAttribute("select", key); try { req.getRequestDispatcher("/jsp/version/ver_list.jsp").forward(req, resp); } catch (Exception e) { e.printStackTrace(); } } else { // 存儲編碼后的文件名 String name = "name"; // 存儲文件名稱 String n = ""; if (key != "") { n = verList.get(0).getPrdName() + "的版本列表"; } else { n = "產品版本列表"; } try { name = URLEncoder.encode(n, "utf-8"); } catch (UnsupportedEncodingException e1) { e1.printStackTrace(); } resp.setHeader("content-disposition", "attachment;filename=" + name + ".xls;filename*=utf-8''" + name + ".xls"); System.out.println("key:" + key); // 從session中刪除saveExcelMsg屬性 req.getSession().removeAttribute("saveExcelMsg"); // 定義一個輸出流 ServletOutputStream sos = null; // 創建一個工作簿 HSSFWorkbook wb = new HSSFWorkbook(); // 創建一個工作表 HSSFSheet sheet = null; if (key != "") { sheet = wb.createSheet(verList.get(0).getPrdName() + "的版本信息"); } else { sheet = wb.createSheet("產品版本信息"); } // 返回數據格式對象 // 從格式對象中獲取對應日期格式的編號,如果格式不存在,該方法會為它生成新的編號 HSSFDataFormat format = wb.createDataFormat(); short dfNum = format.getFormat("yyyy-mm-dd"); // 創建樣式對象 CellStyle style = wb.createCellStyle(); // 設置數據格式 style.setDataFormat(dfNum); // 創建第一行(表格標題) HSSFRow row = sheet.createRow(0); HSSFCell cell = row.createCell(0, HSSFCell.CELL_TYPE_STRING); if (key != "") { cell.setCellValue(verList.get(0).getPrdName() + "的產品版本列表"); } else { cell.setCellValue("產品版本列表"); } // 創建第二行(表頭) row = sheet.createRow(1); cell = row.createCell(0, HSSFCell.CELL_TYPE_STRING); cell.setCellValue("序號"); cell = row.createCell(1, HSSFCell.CELL_TYPE_STRING); cell.setCellValue("產品名稱"); cell = row.createCell(2, HSSFCell.CELL_TYPE_STRING); cell.setCellValue("版本號"); cell = row.createCell(3, HSSFCell.CELL_TYPE_STRING); cell.setCellValue("發布日期"); cell = row.createCell(4, HSSFCell.CELL_TYPE_STRING); cell.setCellValue("版本類型"); cell = row.createCell(5, HSSFCell.CELL_TYPE_STRING); cell.setCellValue("版本描述"); int num = 1; // 遍歷輸出verList中的數據,將其存入Excel中 for (int i = 0; i < verList.size(); i++) { row = sheet.createRow(i + 2); // 寫入序號 cell = row.createCell(0, HSSFCell.CELL_TYPE_NUMERIC); cell.setCellValue(num); num++; // 寫入產品名稱 cell = row.createCell(1, HSSFCell.CELL_TYPE_STRING); cell.setCellValue(verList.get(i).getPrdName()); // 寫入版本號 cell = row.createCell(2, HSSFCell.CELL_TYPE_STRING); cell.setCellValue(verList.get(i).getVerNo()); // 寫入發布日期(日期格式做處理) cell = row.createCell(3, HSSFCell.CELL_TYPE_STRING); // 將樣式應用于單元格 cell.setCellStyle(style); cell.setCellValue(verList.get(i).getVerDate()); // 寫入版本類型 cell = row.createCell(4, HSSFCell.CELL_TYPE_STRING); cell.setCellValue(verList.get(i).getVerType()); // 寫入版本描述 cell = row.createCell(5, HSSFCell.CELL_TYPE_STRING); cell.setCellValue(verList.get(i).getVerDesc()); } try { // 保存到文件中 sos = resp.getOutputStream(); wb.write(sos); } catch (Exception e) { e.printStackTrace(); } finally { if (sos != null) { try { sos.close(); } catch (IOException e) { e.printStackTrace(); } } } } } |
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。