码迷,mamicode.com
首页 > 其他好文 > 详细

struts导出Excel07

时间:2014-06-20 21:56:55      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:des   style   class   blog   code   java   

struts配置如下:

1 <package name="operation_exportExcel" namespace="/exportExcel" extends="common">
2         <action name="*ExportExcel" class="outAction" method="{1}ExportExcel">            
3         </action>        
4     </package>

action中的代码如下:

bubuko.com,布布扣
  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 }  
View Code

jsp代码:

var newUrl = getContextPath()+"/exportExcel/orderExportExcel.action?hmsOrderInfo.orderNumber"+orderNumber+"&hmsOrderInfo.orderStatus="+orderStatus
                +"&hmsOrderInfo.startTime="+d4311 + "&hmsOrderInfo.endTime="+d4312;
    
    window.open(newUrl);

 

struts导出Excel07,布布扣,bubuko.com

struts导出Excel07

标签:des   style   class   blog   code   java   

原文地址:http://www.cnblogs.com/seapeak23/p/3795957.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!