本文實例為大家分享了java web將數(shù)據(jù)導(dǎo)出為Excel格式文件的具體代碼,供大家參考,具體內(nèi)容如下
1、jsp代碼
<input type="button" class="btn btn-info" onclick="getVerExcel();" value="導(dǎo)出為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 :將產(chǎn)品版本列表導(dǎo)出為Excel文件 * @param req * 請求 * @param resp * 應(yīng)答 * @param page * 當前頁數(shù) * @param key * 查詢條件 * @return */ @RequestMapping("getPrdVerListExcel") public void getExcel(HttpServletRequest req, HttpServletResponse resp, Integer page, String key) { // 設(shè)置文件的mime類型 resp.setContentType("application/vnd.ms-excel"); // 得到所有的數(shù)據(jù) List< Version > verList = prdVersionSer.getAllPrdVersion(key); // 若沒有數(shù)據(jù),則給用戶提示 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 = "產(chǎ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; // 創(chuàng)建一個工作簿 HSSFWorkbook wb = new HSSFWorkbook(); // 創(chuàng)建一個工作表 HSSFSheet sheet = null; if (key != "") { sheet = wb.createSheet(verList.get(0).getPrdName() + "的版本信息"); } else { sheet = wb.createSheet("產(chǎn)品版本信息"); } // 返回數(shù)據(jù)格式對象 // 從格式對象中獲取對應(yīng)日期格式的編號,如果格式不存在,該方法會為它生成新的編號 HSSFDataFormat format = wb.createDataFormat(); short dfNum = format.getFormat("yyyy-mm-dd"); // 創(chuàng)建樣式對象 CellStyle style = wb.createCellStyle(); // 設(shè)置數(shù)據(jù)格式 style.setDataFormat(dfNum); // 創(chuàng)建第一行(表格標題) HSSFRow row = sheet.createRow(0); HSSFCell cell = row.createCell(0, HSSFCell.CELL_TYPE_STRING); if (key != "") { cell.setCellValue(verList.get(0).getPrdName() + "的產(chǎn)品版本列表"); } else { cell.setCellValue("產(chǎn)品版本列表"); } // 創(chuàng)建第二行(表頭) row = sheet.createRow(1); cell = row.createCell(0, HSSFCell.CELL_TYPE_STRING); cell.setCellValue("序號"); cell = row.createCell(1, HSSFCell.CELL_TYPE_STRING); cell.setCellValue("產(chǎn)品名稱"); cell = row.createCell(2, HSSFCell.CELL_TYPE_STRING); cell.setCellValue("版本號"); cell = row.createCell(3, HSSFCell.CELL_TYPE_STRING); cell.setCellValue("發(fā)布日期"); cell = row.createCell(4, HSSFCell.CELL_TYPE_STRING); cell.setCellValue("版本類型"); cell = row.createCell(5, HSSFCell.CELL_TYPE_STRING); cell.setCellValue("版本描述"); int num = 1; // 遍歷輸出verList中的數(shù)據(jù),將其存入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++; // 寫入產(chǎn)品名稱 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()); // 寫入發(fā)布日期(日期格式做處理) cell = row.createCell(3, HSSFCell.CELL_TYPE_STRING); // 將樣式應(yīng)用于單元格 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(); } } } } } |
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持服務(wù)器之家。