项目使用的是jeecg开源框架(springmvc+spring+hibernate+。。。。。。等)此代码仅供参考!如有更好的意见或建议可留言。
创建excel大致分这几步:
1、创建HSSFWorkbook对象(也就是excel文档对象)
2、通过HSSFWorkbook对象创建sheet对象(也就是excel中的sheet)
3、通过sheet对象创建HSSFROW对象(row行对象)
4、通过HSSFROW对象创建列cell并set值(列名)
1 controller 层
2
3 /**
4 * excel自定义导出
5 * @param hAqscTieupsummary
6 * @param request
7 * @param response
8 * @param dataGrid
9 * @param modelMap
10 * @return
11 */
12 @SuppressWarnings("deprecation")
13 @RequestMapping(params = "exportEXL")
14 public String exportEXL(HAqscTieupsummaryEntity hAqscTieupsummary,
15 HttpServletRequest request, HttpServletResponse response,
16 DataGrid dataGrid, ModelMap modelMap) {
17 try {
18 String dateType = "yyyy";
19 SimpleDateFormat df = new SimpleDateFormat(dateType);// 设置日期格式
20 SimpleDateFormat df1 = new SimpleDateFormat("yyyy.MM.dd");// 设置日期格式
21 // 创建HSSFWorkbook对象(excel的文档对象)
22 HSSFWorkbook wb = new HSSFWorkbook();
23 HSSFRow row = null;
24 HSSFCell cell = null;
25 // 建立新的sheet对象(excel的表单) 并设置sheet名字
26 HSSFSheet sheet = wb.createSheet("占压管线台账信息");
27 sheet.setDefaultRowHeightInPoints(30);// 设置缺省列高sheet.setDefaultColumnWidth(20);//设置缺省列宽
28 //----------------标题样式---------------------
29 HSSFCellStyle titleStyle = wb.createCellStyle(); //标题样式
30 titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
31 titleStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
32 Font ztFont = wb.createFont();
33 ztFont.setItalic(false); // 设置字体为斜体字
34 ztFont.setColor(Font.COLOR_NORMAL); // 将字体设置为“红色”
35 ztFont.setFontHeightInPoints((short)16); // 将字体大小设置为18px
36 ztFont.setFontName("宋体"); // 将“宋体”字体应用到当前单元格上
37 ztFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); //加粗
38 // ztFont.setUnderline(Font.U_DOUBLE); // 添加(Font.U_SINGLE单条下划线/Font.U_DOUBLE双条下划线)
39 // ztFont.setStrikeout(true); // 是否添加删除线
40 titleStyle.setFont(ztFont);
41 //-------------------------------------------
42 //----------------二级标题格样式----------------------------------
43 HSSFCellStyle titleStyle2 = wb.createCellStyle(); //表格样式
44 titleStyle2.setAlignment(HSSFCellStyle.ALIGN_CENTER);
45 titleStyle2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
46 Font ztFont2 = wb.createFont();
47 ztFont2.setItalic(false); // 设置字体为斜体字
48 ztFont2.setColor(Font.COLOR_NORMAL); // 将字体设置为“红色”
49 ztFont2.setFontHeightInPoints((short)11); // 将字体大小设置为18px
50 ztFont2.setFontName("宋体"); // 字体应用到当前单元格上
51 ztFont2.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); //加粗
52 // ztFont.setUnderline(Font.U_DOUBLE); // 添加(Font.U_SINGLE单条下划线/Font.U_DOUBLE双条下划线)
53 // ztFont.setStrikeout(true); // 是否添加删除线
54 titleStyle2.setFont(ztFont2);
55 //----------------------------------------------------------
56 //----------------单元格样式----------------------------------
57 HSSFCellStyle cellStyle = wb.createCellStyle(); //表格样式
58 cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
59 cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
60 cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框
61 cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
62 cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
63 cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
64 Font cellFont = wb.createFont();
65 cellFont.setItalic(false); // 设置字体为斜体字
66 cellFont.setColor(Font.COLOR_NORMAL); // 将字体设置为“红色”
67 cellFont.setFontHeightInPoints((short)10); // 将字体大小设置为18px
68 cellFont.setFontName("宋体"); // 字体应用到当前单元格上
69 // cellFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
70 cellStyle.setFont(cellFont);
71 cellStyle.setWrapText(true);//设置自动换行
72 //----------------------------------------------------------
73 // ----------------------创建第一行---------------
74 // 在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个
75 row = sheet.createRow(0);
76 // 创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个
77 cell = row.createCell(0);
78 // 合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列
79 sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 19));
80 // 设置单元格内容
81 cell.setCellValue("占压城市地下管线、输油气管道、化工产品管道违法违规建设汇总表");
82 cell.setCellStyle(titleStyle);
83 // ----------------------------------------------
84
85 // ------------------创建第二行(单位、填表日期)---------------------
86 row = sheet.createRow(1); // 创建第二行
87 cell = row.createCell(0);
88 cell.setCellValue("填报单位名称(盖章): ");
89 cell.setCellStyle(titleStyle2);
90 sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 3));
91 cell = row.createCell(4);
92 sheet.addMergedRegion(new CellRangeAddress(1, 1, 4, 5));
93 TSBaseUser tb = ResourceUtil.getSessionUserName(); //获取当前登录用户信息
94 String uid = tb.getId();
95 String deptId = userDao.getDeptId(uid);
96 String deptName = userDao.getDeptName(deptId);
97 cell.setCellValue(deptName);
98 // cell.setCellValue("*****");
99 cell.setCellStyle(titleStyle2);
100 cell = row.createCell(13); // 填表时间
101 sheet.addMergedRegion(new CellRangeAddress(1, 1, 13, 16));
102 cell.setCellValue("填表时间:"+df1.format(new Date()));
103 cell.setCellStyle(titleStyle2);
104 // HSSFCell cell14 = row.createCell(15); // 填表时间
105 // cell14.setCellValue();
106 // cell14.setCellValue("2017.11.30");
107 // cell14.setCellStyle(titleStyle2);
108 // ----------------------------------------------
109
110 // ------------------创建表头start---------------------
111 row = sheet.createRow(2); // 创建第三行
112 sheet.addMergedRegion(new CellRangeAddress(2, 3, 0, 0));
113 cell = row.createCell(0);
114 cell.setCellValue("序号");
115 cell.setCellStyle(cellStyle);
116
117 sheet.addMergedRegion(new CellRangeAddress(2, 3, 1, 1));
118 cell = row.createCell(1);
119 cell.setCellValue("隐患等级评定");
120 cell.setCellStyle(cellStyle);
121
122 sheet.addMergedRegion(new CellRangeAddress(2, 3, 2, 2));
123 cell = row.createCell(2);
124 cell.setCellValue("隐患名称");
125 cell.setCellStyle(cellStyle);
126
127 sheet.addMergedRegion(new CellRangeAddress(2, 2, 3, 5));
128 cell = row.createCell(3);
129 cell.setCellValue("位置描述");
130 cell.setCellStyle(cellStyle);
131
132 cell = row.createCell(4);
133 cell.setCellStyle(cellStyle);
134 cell = row.createCell(5);
135 cell.setCellStyle(cellStyle);
136
137 sheet.addMergedRegion(new CellRangeAddress(2, 2, 6, 10));
138 cell = row.createCell(6);
139 cell.setCellValue("管线情况");
140 cell.setCellStyle(cellStyle);
141
142 cell = row.createCell(7);
143 cell.setCellStyle(cellStyle);
144 cell = row.createCell(8);
145 cell.setCellStyle(cellStyle);
146 cell = row.createCell(9);
147 cell.setCellStyle(cellStyle);
148 cell = row.createCell(10);
149 cell.setCellStyle(cellStyle);
150
151 sheet.addMergedRegion(new CellRangeAddress(2, 2, 11, 13));
152 cell = row.createCell(11);
153 cell.setCellValue("占压物情况");
154 cell.setCellStyle(cellStyle);
155
156 cell = row.createCell(12);
157 cell.setCellStyle(cellStyle);
158 cell = row.createCell(13);
159 cell.setCellStyle(cellStyle);
160
161 sheet.addMergedRegion(new CellRangeAddress(2, 2, 14, 14));
162 cell = row.createCell(14);
163 cell.setCellValue("占压物用途");
164 cell.setCellStyle(cellStyle);
165
166 sheet.addMergedRegion(new CellRangeAddress(2, 3, 15, 15));
167 cell = row.createCell(15);
168 cell.setCellValue("已采用的安全防护措施");
169 cell.setCellStyle(cellStyle);
170
171 sheet.addMergedRegion(new CellRangeAddress(2, 3, 16, 16));
172 cell = row.createCell(16);
173 cell.setCellValue("备注");
174 cell.setCellStyle(cellStyle);
175
176 sheet.addMergedRegion(new CellRangeAddress(2, 3, 17, 17));
177 cell = row.createCell(17);
178 cell.setCellValue("联系人电话");
179 cell.setCellStyle(cellStyle);
180
181 sheet.addMergedRegion(new CellRangeAddress(2, 3, 18, 18));
182 cell = row.createCell(18);
183 cell.setCellValue("是否已和区管委和供热办联系");
184 cell.setCellStyle(cellStyle);
185
186 sheet.addMergedRegion(new CellRangeAddress(2, 3, 19, 19));
187 cell = row.createCell(19);
188 cell.setCellValue("是否采取防范措施");
189 cell.setCellStyle(cellStyle);
190
191 //--------------------------- 创建第四行--------------------
192 row = sheet.createRow(3);
193 sheet.addMergedRegion(new CellRangeAddress(3, 3, 3, 3));
194 cell = row.createCell(3);
195 cell.setCellValue("所在区县");
196 cell.setCellStyle(cellStyle);
197
198 cell = row.createCell(0);
199 cell.setCellStyle(cellStyle);
200
201 sheet.addMergedRegion(new CellRangeAddress(3, 3, 4, 4));
202 cell = row.createCell(4);
203 cell.setCellValue("所在街道");
204 cell.setCellStyle(cellStyle);
205
206 cell = row.createCell(1);
207 cell.setCellStyle(cellStyle);
208
209 sheet.addMergedRegion(new CellRangeAddress(3, 3, 5, 5));
210 cell = row.createCell(5);
211 cell.setCellValue("详细地址");
212 cell.setCellStyle(cellStyle);
213
214 sheet.addMergedRegion(new CellRangeAddress(3, 3, 6, 6));
215 cell = row.createCell(6);
216 cell.setCellValue("管线建成时间");
217 cell.setCellStyle(cellStyle);
218
219 sheet.addMergedRegion(new CellRangeAddress(3, 3, 7, 7));
220 cell = row.createCell(7);
221 cell.setCellValue("管线埋深");
222 cell.setCellStyle(cellStyle);
223
224 sheet.addMergedRegion(new CellRangeAddress(3, 3, 8, 8));
225 cell = row.createCell(8);
226 cell.setCellValue("管径");
227 cell.setCellStyle(cellStyle);
228
229 sheet.addMergedRegion(new CellRangeAddress(3, 3, 9, 9));
230 cell = row.createCell(9);
231 cell.setCellValue("管线压力等级");
232 cell.setCellStyle(cellStyle);
233
234 sheet.addMergedRegion(new CellRangeAddress(3, 3, 10, 10));
235 cell = row.createCell(10);
236 cell.setCellValue("占压管线长度");
237 cell.setCellStyle(cellStyle);
238
239 sheet.addMergedRegion(new CellRangeAddress(3, 3, 11, 11));
240 cell = row.createCell(11);
241 cell.setCellValue("占压单位(个人)名称");
242 cell.setCellStyle(cellStyle);
243
244 sheet.addMergedRegion(new CellRangeAddress(3, 3, 12, 12));
245 cell = row.createCell(12);
246 cell.setCellValue("占压物建成时间");
247 cell.setCellStyle(cellStyle);
248
249 sheet.addMergedRegion(new CellRangeAddress(3, 3, 13, 13));
250 cell = row.createCell(13);
251 cell.setCellValue("占压物面积(平方米)");
252 cell.setCellStyle(cellStyle);
253
254 sheet.addMergedRegion(new CellRangeAddress(3, 3, 14, 14));
255 cell = row.createCell(14);
256 cell.setCellValue("经营、出租、自用、居住");
257 cell.setCellStyle(cellStyle);
258
259 cell = row.createCell(15);
260 cell.setCellStyle(cellStyle);
261 cell = row.createCell(16);
262 cell.setCellStyle(cellStyle);
263 cell = row.createCell(17);
264 cell.setCellStyle(cellStyle);
265 cell = row.createCell(18);
266 cell.setCellStyle(cellStyle);
267 cell = row.createCell(19);
268 cell.setCellStyle(cellStyle);
269 //-------------------------表头end---------------------
270 CriteriaQuery cq = new CriteriaQuery(HAqscTieupsummaryEntity.class,
271 dataGrid);
272 org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq,
273 hAqscTieupsummary, request.getParameterMap());
274 List<HAqscTieupsummaryEntity> hAqscTieupsummarys = this.hAqscTieupsummaryService
275 .getListByCriteriaQuery(cq, false);
276 for (int i = 0; i < hAqscTieupsummarys.size(); i++) { //向表格插入数据
277 List<Object> data = new ArrayList<>(); //将前台传来的数据存入到list中
278 // System.out.println(hAqscTieupsummarys.get(i).getSeqNum());
279 HAqscTieupsummaryEntity entity = hAqscTieupsummarys.get(i);
280 data.add(entity.getSeqNum());
281 String yhjb = entity.getYhDjpd();
282 String hyjb = dao.getHyjb(yhjb);
283 data.add(hyjb); //隐患级别
284 data.add(entity.getYhName());
285 String countryName = dao.getCountryByCode(entity.getAtcounty()); //区县
286 data.add(countryName);
287 String code = entity.getAtdistrict();
288 String streetName = dao.getStreetByCode(code); //街道
289 data.add(streetName);
290 data.add(entity.getAddress());
291 Date buildtime = entity.getPipelineBuildtime();
292 if (buildtime!=null) {
293 String format = df.format(buildtime);
294 data.add(format);
295 }else{
296 data.add("");
297 }
298 data.add(entity.getPipelineDepth());
299 data.add(entity.getPipeSize());
300 data.add(entity.getPipelinePr());
301 data.add(entity.getTppipelineLength());
302 data.add(entity.getTieupName());
303 Date goodsBuildtime = entity.getTieupgoodsBuildtime();
304 if (buildtime!=null) {
305 String format = df.format(goodsBuildtime);
306 data.add(format);
307 }else{
308 data.add("");
309 }
310 data.add(entity.getTieupgoodsArea());
311 String useType = entity.getTieupgoodsUse();
312 data.add(dao.getUseType(useType));
313 data.add(entity.getUseSecuritymeasures());
314 data.add(entity.getRemark());
315 data.add(entity.getTelephone());
316 data.add(dao.getIsContact(entity.getIsContact()));
317 data.add(entity.getIsUsesecuritymeasures());
318 int rowNum = 4+i; //从第四行开始
319 row = sheet.createRow(rowNum);
320 for (int j = 0; j < data.size(); j++) { //将数据添加到单元格中
321 // System.out.println(data.get(j));
322 sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum, j, j));
323 cell = row.createCell(j);
324 cell.setCellValue(""+data.get(j)+"");
325 cell.setCellStyle(cellStyle);
326 }
327 }
328
329 // 输出Excel文件
330 OutputStream output = response.getOutputStream();
331 response.reset();
332 response.setHeader("Content-disposition",
333 "attachment; filename=details.xls"); //filename = 文件名
334 response.setContentType("application/msexcel");
335 wb.write(output);
336 output.close();
337 } catch (IOException e) {
338 // TODO Auto-generated catch block
339 e.printStackTrace();
340 }
341 return null;
342 }
1 前台请求地址:
2 <t:dgToolBar title="导出" icon="icon-putout" funname="ExportXls"></t:dgToolBar>
3 //导出
4 function ExportXls() {
5 JeecgExcelExport("hAqscTieupsummaryController.do?exportEXL","hAqscTieupsummaryList");
6 }
View Code
excel导出模版如下: