struts配置如下:
1 <package name="operation_exportExcel" namespace="/exportExcel" extends="common"> 2 <action name="*ExportExcel" class="outAction" method="{1}ExportExcel"> 3 </action> 4 </package>
action中的代码如下:
1 package com.sides.operation.exportExcel; 2 3 4 import java.io.IOException; 5 import java.io.OutputStream; 6 import java.io.UnsupportedEncodingException; 7 import java.util.List; 8 9 import javax.servlet.http.HttpServletResponse; 10 11 import org.apache.poi.xssf.usermodel.XSSFCell; 12 import org.apache.poi.xssf.usermodel.XSSFCellStyle; 13 import org.apache.poi.xssf.usermodel.XSSFFont; 14 import org.apache.poi.xssf.usermodel.XSSFRow; 15 import org.apache.poi.xssf.usermodel.XSSFSheet; 16 import org.apache.poi.xssf.usermodel.XSSFWorkbook; 17 import org.apache.struts2.interceptor.ServletResponseAware; 18 19 import com.opensymphony.xwork2.ActionSupport; 20 import com.sides.operation.hmsorderinfo.HmsOrderInfo; 21 import com.sides.operation.hmsorderinfo.HmsOrderInfoService; 22 import com.sides.operation.hmsserviceorder.HmsServiceOrder; 23 import com.sides.operation.hmsserviceorder.HmsServiceOrderService; 24 import com.sides.operation.orderTotal.OrderTotal; 25 import com.sides.operation.orderTotal.OrderTotalService; 26 import com.sides.operation.serviceOrder.ServiceOrder; 27 import com.sides.operation.serviceOrder.ServiceOrderAction; 28 import com.sides.operation.serviceOrder.ServiceOrderService; 29 import com.sides.pub.utils.ApplicationUtil; 30 import com.sun.istack.logging.Logger; 31 32 public class OutAction extends ActionSupport implements ServletResponseAware{ 33 private OrderTotal orderTotal; 34 private HmsOrderInfo hmsOrderInfo ; 35 private ServiceOrder serviceOrder; 36 private HmsServiceOrder hmsServiceOrder ; 37 private HttpServletResponse response; 38 private String fileName; 39 private static final long serialVersionUID = 1L; 40 private Logger logger = Logger.getLogger(OutAction.class); 41 42 /** 设置响应头*/ 43 public void setResponseHeader(){ 44 try{ 45 // response.setContentType("application/msexcel;charset=UTF-8"); //两种方法都可以 46 response.setContentType("application/octet-stream;charset=UTF-8"); 47 // response.setContentType("application/octet-stream;charset=iso-8859-1"); 48 // response.setHeader("Content-Disposition", "attachment;filename=" 49 // +java.net.URLEncoder.encode(this.fileName, "utf-8")); 50 51 response.setHeader("Content-Disposition", "attachment;filename=" 52 +new String( this.fileName.getBytes("gb2312"), "ISO8859-1") ); 53 54 //客户端不缓存 55 response.addHeader("Pargam", "no-cache"); 56 response.addHeader("Cache-Control", "no-cache"); 57 }catch(Exception ex){ 58 ex.printStackTrace(); 59 } 60 } 61 62 /** 63 * 导出订单excel 64 */ 65 public String orderExportExcel(){ 66 logger.info("订单汇总表"); 67 this.setFileName("订单汇总表.xlsx"); 68 setResponseHeader(); 69 try { 70 orderExportExcelData(response.getOutputStream()); 71 response.getOutputStream().flush(); 72 response.getOutputStream().close(); 73 } catch (IOException e) { 74 e.printStackTrace(); 75 } 76 logger.info("订单汇总表导出完毕"); 77 return null; 78 } 79 80 /** 81 * 导出订单Excel数据 82 * @param os 83 * @throws IOException 84 */ 85 private void orderExportExcelData(OutputStream os) throws IOException{ 86 87 logger.info("订单汇总表 Excel数据处理"); 88 89 XSSFWorkbook wb = new XSSFWorkbook(); 90 91 // 创建标题单元格样式 92 XSSFCellStyle cellStyleTitle = wb.createCellStyle(); 93 // 指定单元格居中对齐 94 cellStyleTitle.setAlignment(XSSFCellStyle.ALIGN_CENTER); 95 // 指定单元格垂直居中对齐 96 cellStyleTitle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER); 97 // 指定当单元格内容显示不下时自动换行 98 cellStyleTitle.setWrapText(true); 99 100 XSSFCellStyle cellStyle = wb.createCellStyle(); 101 // 指定单元格居中对齐 102 cellStyle.setAlignment(XSSFCellStyle.ALIGN_LEFT); 103 // 指定单元格垂直居中对齐 104 cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER); 105 // 指定当单元格内容显示不下时自动换行 106 cellStyle.setWrapText(true); 107 // ------------------------------------------------------------------ 108 // 设置单元格字体 109 XSSFFont titleFont = wb.createFont(); 110 titleFont.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD); 111 titleFont.setFontName("宋体"); 112 titleFont.setFontHeight((short) 200); 113 114 XSSFFont font = wb.createFont(); 115 font.setBoldweight(XSSFFont.BOLDWEIGHT_NORMAL); 116 font.setFontName("宋体"); 117 font.setFontHeight((short) 200); 118 119 cellStyleTitle.setFont(titleFont); 120 cellStyle.setFont(font); 121 122 XSSFSheet sheet = wb.createSheet("订单统计信息"); 123 XSSFRow row = sheet.createRow(0); 124 125 XSSFCell cell0 = row.createCell(0) ; 126 cell0.setCellValue("订单编号"); 127 cell0.setCellStyle(cellStyleTitle); 128 129 XSSFCell cell1 = row.createCell(1) ; 130 cell1.setCellValue("商品名称"); 131 cell1.setCellStyle(cellStyleTitle); 132 133 134 // XSSFCell cell2 = row.createCell(2) ; 135 // cell2.setCellValue("数量"); 136 // cell2.setCellStyle(cellStyleTitle); 137 138 XSSFCell cell3 = row.createCell(2) ; 139 cell3.setCellValue("产生日期"); 140 cell3.setCellStyle(cellStyleTitle); 141 142 /*XSSFCell cell4 = row.createCell(4) ; 143 cell4.setCellValue("接收人姓名"); 144 cell4.setCellStyle(cellStyleTitle); 145 146 XSSFCell cell5 = row.createCell(5) ; 147 cell5.setCellValue("联系电话"); 148 cell5.setCellStyle(cellStyleTitle); 149 150 XSSFCell cell6 = row.createCell(6) ; 151 cell6.setCellValue("收货方式"); 152 cell6.setCellStyle(cellStyleTitle); 153 154 XSSFCell cell7 = row.createCell(7) ; 155 cell7.setCellValue("地址"); 156 cell7.setCellStyle(cellStyleTitle); 157 158 XSSFCell cell8 = row.createCell(8) ; 159 cell8.setCellValue("配送时间 "); 160 cell8.setCellStyle(cellStyleTitle);*/ 161 162 XSSFCell cell9 = row.createCell(3) ; 163 cell9.setCellValue("订单总价"); 164 cell9.setCellStyle(cellStyleTitle); 165 166 XSSFCell cell10 = row.createCell(4) ; 167 cell10.setCellValue("订单状态"); 168 cell10.setCellStyle(cellStyleTitle); 169 170 final HmsOrderInfoService hmsOrderInfoService = (HmsOrderInfoService)ApplicationUtil.getBean("hmsOrderInfoServiceImpl"); 171 List<HmsOrderInfo> list = hmsOrderInfoService.queryListHmsOrderInfo(hmsOrderInfo) ; 172 for(int i=1;i<=list.size();i++){ 173 HmsOrderInfo el = list.get(i-1); 174 175 //String orderDeliver = el.getOrderDeliverStr() == null?"":el.getOrderDeliverStr(); 176 177 row = sheet.createRow(i); 178 cell0 = row.createCell(0) ; 179 cell0.setCellValue(el.getOrderNumber()); 180 cell0.setCellStyle(cellStyle); 181 182 // cell1 = row.createCell(1) ; 183 // cell1.setCellValue(el.getProductName()+"("+el.getProductType()+"L)"); 184 // cell1.setCellStyle(cellStyle); 185 186 cell1 = row.createCell(1) ; 187 cell1.setCellValue(el.getMainPackage()); 188 cell1.setCellStyle(cellStyle); 189 190 // cell2 = row.createCell(2) ; 191 // cell2.setCellValue(el.getQuantity()+"*"+el.getProType()+"L"); 192 // cell2.setCellStyle(cellStyle); 193 194 cell3 = row.createCell(2) ; 195 cell3.setCellValue(el.getOrderTimeStr()); 196 cell3.setCellStyle(cellStyle); 197 198 /*cell4 = row.createCell(4) ; 199 cell4.setCellValue(el.getOrderRecName()); 200 cell4.setCellStyle(cellStyle); 201 202 cell5 = row.createCell(5) ; 203 cell5.setCellValue(el.getOrderPhone()); 204 cell5.setCellStyle(cellStyle); 205 206 cell6 = row.createCell(6) ; 207 cell6.setCellValue(el.getDeliverTypeStr()); 208 cell6.setCellStyle(cellStyle); 209 210 cell7 = row.createCell(7) ; 211 cell7.setCellValue(el.getOrderRecAddress()); 212 cell7.setCellStyle(cellStyle); 213 214 cell8 = row.createCell(8) ; 215 cell8.setCellValue(orderDeliver); 216 cell8.setCellStyle(cellStyle);*/ 217 218 cell9 = row.createCell(3) ; 219 cell9.setCellValue(el.getOrderTotalPrice()); 220 cell9.setCellStyle(cellStyle); 221 222 cell10 = row.createCell(4) ; 223 cell10.setCellValue(el.getOrderStatusName()); 224 cell10.setCellStyle(cellStyle); 225 226 } 227 228 for(int j=0;j<11;j++){ 229 sheet.autoSizeColumn((short)j); //调整第一列宽度 230 } 231 232 try{ 233 wb.write(os); 234 }catch(Exception ex){ 235 ex.printStackTrace(); 236 } 237 logger.info("订单汇总表 Excel数据处理完毕"); 238 } 239 240 /** 241 * 导出服务预约excel 242 */ 243 public String appointServiceExportExcel(){ 244 logger.info("进入服务预约"); 245 this.setFileName("服务预约汇总表.xlsx"); 246 setResponseHeader(); 247 try { 248 appointServiceExportExcelData(response.getOutputStream()); 249 response.getOutputStream().flush(); 250 response.getOutputStream().close(); 251 } catch (IOException e) { 252 e.printStackTrace(); 253 } 254 logger.info("服务预约完毕"); 255 return null; 256 } 257 258 /** 259 * 导出订单Excel数据 260 * @param os 261 * @throws IOException 262 */ 263 private void appointServiceExportExcelData(OutputStream os) throws IOException{ 264 265 logger.info("进入服务预约 Excel处理"); 266 267 XSSFWorkbook wb = new XSSFWorkbook(); 268 269 // 创建标题单元格样式 270 XSSFCellStyle cellStyleTitle = wb.createCellStyle(); 271 // 指定单元格居中对齐 272 cellStyleTitle.setAlignment(XSSFCellStyle.ALIGN_CENTER); 273 // 指定单元格垂直居中对齐 274 cellStyleTitle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER); 275 // 指定当单元格内容显示不下时自动换行 276 cellStyleTitle.setWrapText(true); 277 278 XSSFCellStyle cellStyle = wb.createCellStyle(); 279 // 指定单元格居中对齐 280 cellStyle.setAlignment(XSSFCellStyle.ALIGN_LEFT); 281 // 指定单元格垂直居中对齐 282 cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER); 283 // 指定当单元格内容显示不下时自动换行 284 cellStyle.setWrapText(true); 285 // ------------------------------------------------------------------ 286 // 设置单元格字体 287 XSSFFont titleFont = wb.createFont(); 288 titleFont.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD); 289 titleFont.setFontName("宋体"); 290 titleFont.setFontHeight((short) 200); 291 292 XSSFFont font = wb.createFont(); 293 font.setBoldweight(XSSFFont.BOLDWEIGHT_NORMAL); 294 font.setFontName("宋体"); 295 font.setFontHeight((short) 200); 296 297 cellStyleTitle.setFont(titleFont); 298 cellStyle.setFont(font); 299 300 XSSFSheet sheet = wb.createSheet("服务预约统计信息"); 301 XSSFRow row = sheet.createRow(0); 302 303 XSSFCell cell0 = row.createCell(0) ; 304 cell0.setCellValue("订单编号"); 305 cell0.setCellStyle(cellStyleTitle); 306 307 308 XSSFCell cell1 = row.createCell(1) ; 309 cell1.setCellValue("姓名"); 310 cell1.setCellStyle(cellStyleTitle); 311 312 XSSFCell cell2 = row.createCell(2) ; 313 cell2.setCellValue("联系电话"); 314 cell2.setCellStyle(cellStyleTitle); 315 316 XSSFCell cell3 = row.createCell(3) ; 317 cell3.setCellValue("预约时间"); 318 cell3.setCellStyle(cellStyleTitle); 319 320 XSSFCell cell4 = row.createCell(4) ; 321 cell4.setCellValue("到店时间"); 322 cell4.setCellStyle(cellStyleTitle); 323 324 XSSFCell cell5 = row.createCell(5) ; 325 cell5.setCellValue("服务完成时间"); 326 cell5.setCellStyle(cellStyleTitle); 327 328 XSSFCell cell6 = row.createCell(6) ; 329 cell6.setCellValue("网点名称"); 330 cell6.setCellStyle(cellStyleTitle); 331 332 XSSFCell cell7 = row.createCell(7) ; 333 cell7.setCellValue("网点地址"); 334 cell7.setCellStyle(cellStyleTitle); 335 336 XSSFCell cell8 = row.createCell(8) ; 337 cell8.setCellValue("网点电话"); 338 cell8.setCellStyle(cellStyleTitle); 339 340 XSSFCell cell9 = row.createCell(9) ; 341 cell9.setCellValue("服务状态"); 342 cell9.setCellStyle(cellStyleTitle); 343 344 XSSFCell cell10 = row.createCell(10) ; 345 cell10.setCellValue("主套餐"); 346 cell10.setCellStyle(cellStyleTitle); 347 348 XSSFCell cell11 = row.createCell(11) ; 349 cell11.setCellValue("附加套餐"); 350 cell11.setCellStyle(cellStyleTitle); 351 352 XSSFCell cell12 = row.createCell(12) ; 353 cell12.setCellValue("车辆品牌"); 354 cell12.setCellStyle(cellStyleTitle); 355 356 XSSFCell cell13 = row.createCell(13) ; 357 cell13.setCellValue("车辆型号"); 358 cell13.setCellStyle(cellStyleTitle); 359 360 XSSFCell cell14 = row.createCell(14) ; 361 cell14.setCellValue("车辆年款"); 362 cell14.setCellStyle(cellStyleTitle); 363 364 XSSFCell cell15 = row.createCell(15) ; 365 cell15.setCellValue("车牌号"); 366 cell15.setCellStyle(cellStyleTitle); 367 368 XSSFCell cell16 = row.createCell(16) ; 369 cell16.setCellValue("取车地址"); 370 cell16.setCellStyle(cellStyleTitle); 371 372 XSSFCell cell17 = row.createCell(17) ; 373 cell17.setCellValue("送车地址"); 374 cell17.setCellStyle(cellStyleTitle); 375 376 377 final HmsServiceOrderService hmsServiceOrderService = (HmsServiceOrderService)ApplicationUtil.getBean("hmsServiceOrderServiceImpl"); 378 List<HmsServiceOrder> list = hmsServiceOrderService.queryPTListHmsServiceOrder(hmsServiceOrder); 379 380 //已预约数 381 int yycount = 0 ; 382 //已到店数 383 int ddcount = 0 ; 384 //已服务完数 385 int fwcount = 0 ; 386 387 logger.info("servicestate:"+hmsServiceOrder.getServiceState()+"list.size():"+list.size()); 388 389 if(null==hmsServiceOrder.getServiceState()||"".equals(hmsServiceOrder.getServiceState())){ 390 hmsServiceOrder.setServiceState(1); 391 List<HmsServiceOrder> yylist = hmsServiceOrderService.queryPTListHmsServiceOrder(hmsServiceOrder); 392 yycount = yylist.size() ; 393 hmsServiceOrder.setServiceState(2); 394 List<HmsServiceOrder> ddlist = hmsServiceOrderService.queryPTListHmsServiceOrder(hmsServiceOrder); 395 ddcount = ddlist.size() ; 396 hmsServiceOrder.setServiceState(3); 397 List<HmsServiceOrder> fwlist = hmsServiceOrderService.queryPTListHmsServiceOrder(hmsServiceOrder); 398 fwcount = fwlist.size() ; 399 }else if(1==hmsServiceOrder.getServiceState()){ 400 yycount = list.size() ; 401 }else if(2==hmsServiceOrder.getServiceState()){ 402 ddcount = list.size() ; 403 }else if(3==hmsServiceOrder.getServiceState()){ 404 fwcount = list.size() ; 405 } 406 407 408 409 410 for(int i=1;i<=list.size();i++){ 411 412 HmsServiceOrder el = list.get(i-1); 413 String shoptime = el.getStrShopTime() == null?"":el.getStrShopTime(); 414 String completeTime = el.getStrCompleteTime()==null?"":el.getStrCompleteTime() ; 415 416 row = sheet.createRow(i); 417 cell0 = row.createCell(0) ; 418 cell0.setCellValue(el.getOrderNumber()); 419 cell0.setCellStyle(cellStyle); 420 421 cell1 = row.createCell(1) ; 422 cell1.setCellValue(el.getReserveName()); 423 cell1.setCellStyle(cellStyle); 424 425 cell2 = row.createCell(2) ; 426 cell2.setCellValue(el.getReservePhone()); 427 cell2.setCellStyle(cellStyle); 428 429 cell3 = row.createCell(3) ; 430 cell3.setCellValue(el.getStrReserveTime()); 431 cell3.setCellStyle(cellStyle); 432 433 cell4 = row.createCell(4) ; 434 cell4.setCellValue(shoptime); 435 cell4.setCellStyle(cellStyle); 436 437 cell5 = row.createCell(5) ; 438 cell5.setCellValue(completeTime); 439 cell5.setCellStyle(cellStyle); 440 441 cell6 = row.createCell(6) ; 442 cell6.setCellValue(el.getServiceName()); 443 cell6.setCellStyle(cellStyle); 444 445 cell7 = row.createCell(7) ; 446 cell7.setCellValue(el.getServicePlaceAddress()); 447 cell7.setCellStyle(cellStyle); 448 449 cell8 = row.createCell(8) ; 450 cell8.setCellValue(el.getServicePlacePhone()); 451 cell8.setCellStyle(cellStyle); 452 453 cell9 = row.createCell(9) ; 454 cell9.setCellValue(el.getServiceStateStr()); 455 cell9.setCellStyle(cellStyle); 456 457 cell10 = row.createCell(10) ; 458 cell10.setCellValue(el.getMainPackages()); 459 cell10.setCellStyle(cellStyle); 460 461 cell11 = row.createCell(11) ; 462 cell11.setCellValue(el.getAdditPackages()==null?"":el.getAdditPackages()); 463 cell11.setCellStyle(cellStyle); 464 465 466 cell12 = row.createCell(12) ; 467 cell12.setCellValue(el.getVehicleBrandStr()==null?"":el.getVehicleBrandStr()); 468 cell12.setCellStyle(cellStyle); 469 470 cell13 = row.createCell(13) ; 471 cell13.setCellValue(el.getVehicleSeriesStr()==null?"":el.getVehicleSeriesStr()); 472 cell13.setCellStyle(cellStyle); 473 474 cell14 = row.createCell(14) ; 475 cell14.setCellValue(el.getVehicleYearStr()==null?"":el.getVehicleYearStr()); 476 cell14.setCellStyle(cellStyle); 477 478 cell15 = row.createCell(15) ; 479 cell15.setCellValue(el.getPlateNo()); 480 cell15.setCellStyle(cellStyle); 481 482 cell16 = row.createCell(16) ; 483 cell16.setCellValue(el.getGetcarAddr()==null?"":el.getGetcarAddr()); 484 cell16.setCellStyle(cellStyle); 485 486 cell17 = row.createCell(17) ; 487 cell17.setCellValue(el.getSendcarAddr()==null?"":el.getSendcarAddr()); 488 cell17.setCellStyle(cellStyle); 489 490 } 491 492 row = sheet.createRow(list.size()+1); 493 cell0 = row.createCell(0) ; 494 cell0.setCellValue("数据统计:"); 495 cell0.setCellStyle(cellStyleTitle); 496 497 cell1 = row.createCell(1) ; 498 cell1.setCellValue("预约数:"+yycount); 499 cell1.setCellStyle(cellStyleTitle); 500 501 cell2 = row.createCell(2) ; 502 cell2.setCellValue("服务中数:"+ddcount); 503 cell2.setCellStyle(cellStyleTitle); 504 505 cell3 = row.createCell(3) ; 506 cell3.setCellValue("已服务数:"+fwcount); 507 cell3.setCellStyle(cellStyleTitle); 508 509 510 for(int j=0;j<18;j++){ 511 sheet.autoSizeColumn((short)j); //调整第一列宽度 512 } 513 514 try{ 515 wb.write(os); 516 }catch(Exception ex){ 517 ex.printStackTrace(); 518 } 519 logger.info("服务预约 Excel处理完毕"); 520 } 521 522 /**记住一定有该属性的set方法*/ 523 public void setServletResponse(HttpServletResponse response) { 524 this.response = response; 525 } 526 527 public OrderTotal getOrderTotal() { 528 return orderTotal; 529 } 530 531 public void setOrderTotal(OrderTotal orderTotal) { 532 this.orderTotal = orderTotal; 533 } 534 535 public ServiceOrder getServiceOrder() { 536 return serviceOrder; 537 } 538 539 public void setServiceOrder(ServiceOrder serviceOrder) { 540 this.serviceOrder = serviceOrder; 541 } 542 543 public String getFileName() { 544 return fileName; 545 } 546 547 public void setFileName(String fileName) { 548 this.fileName = fileName; 549 } 550 551 public HmsOrderInfo getHmsOrderInfo() { 552 return hmsOrderInfo; 553 } 554 555 public void setHmsOrderInfo(HmsOrderInfo hmsOrderInfo) { 556 this.hmsOrderInfo = hmsOrderInfo; 557 } 558 559 public HmsServiceOrder getHmsServiceOrder() { 560 return hmsServiceOrder; 561 } 562 563 public void setHmsServiceOrder(HmsServiceOrder hmsServiceOrder) { 564 this.hmsServiceOrder = hmsServiceOrder; 565 } 566 567 }
jsp代码:
var newUrl = getContextPath()+"/exportExcel/orderExportExcel.action?hmsOrderInfo.orderNumber"+orderNumber+"&hmsOrderInfo.orderStatus="+orderStatus +"&hmsOrderInfo.startTime="+d4311 + "&hmsOrderInfo.endTime="+d4312; window.open(newUrl);
struts导出Excel07
时间: 2024-10-10 01:15:42