POI通過讀取Excel模板生成Excel文件

Java代碼  收藏代碼
  1. /** 
  2.      * 導出 
  3.      * @param mapping 
  4.      * @param form 
  5.      * @param request 
  6.      * @param response 
  7.      * @return 
  8.      */  
  9.     public ActionForward export(ActionMapping mapping, ActionForm form,  
  10.             HttpServletRequest request, HttpServletResponse response) {  
  11.           
  12.         String checkBoxValueList = request.getParameter("ckv");  
  13.         if(!CommonUtil.isNotNullorEmtry(checkBoxValueList)) {  
  14.             this.saveMessages(request, "export.fail");  
  15.             return mapping.findForward("export.fail");  
  16.         }  
  17.         List<Order> listOrder = orderService.exportOrderList(checkBoxValueList);  
  18.           
  19.         try {  
  20. //          SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddhhmm");  
  21. //          Calendar calendar = Calendar.getInstance();  
  22.               
  23.             ServletOutputStream os = response.getOutputStream(); //獲得輸出流  
  24.             response.reset();   //清空輸出流  
  25.             String fileName = new String("訂單列表".getBytes("gb2312"), "ISO8859-1") +".xls";  
  26.             response.setHeader("Content-disposition""attachment; filename="+ fileName); //設定輸出文件頭  
  27.             response.setContentType("application/msexcel"); //定義輸出類型  
  28.   
  29.             String filePath = request.getSession().getServletContext().getRealPath("/excel/model/order.xls");  
  30.   
  31.             HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(filePath));    //讀取excel模板  
  32.             try {  
  33.                 HSSFSheet sheet = workbook.getSheetAt(0);   //讀取第一個工作簿  
  34.                 HSSFRow row;  
  35.                 HSSFCell cell = null;  
  36.                 int rownum = 3//添加的起始行  
  37.                 HSSFCellStyle style = this.getStyle(workbook);  
  38.                 Iterator<Order> it = listOrder.iterator();  
  39.                 Order order = null;  
  40.                                   
  41.                 while(it.hasNext()) {  
  42.                     order = new Order();  
  43.                     order = it.next();  
  44.                       
  45.                     row = sheet.createRow(rownum);  
  46.                       
  47.                     myCreateCell(1, String.valueOf(rownum-2), row, cell, style);    //列1  
  48.                     myCreateCell(2, order.getAdName(), row, cell, style);   //列2  
  49.                     myCreateCell(3, order.getSmallAreaName(), row, cell, style);    //列1      
  50.                                           
  51.                     rownum++;  
  52.                 }  
  53.                                   
  54.                 workbook.write(os);  
  55.                 os.flush();  
  56.                 os.close();  
  57.             } catch (Exception e) {  
  58.                 e.printStackTrace();  
  59.             }  
  60.         } catch (IOException e) {  
  61.             e.printStackTrace();  
  62.         }  
  63.         return null;  
  64.     }  
  65.       
  66.     private void myCreateCell(int cellnum, String value, HSSFRow row, HSSFCell cell, HSSFCellStyle style) {  
  67.         cell = row.createCell((short) cellnum);  
  68.         cell.setCellValue(new HSSFRichTextString(value));  
  69.         cell.setCellStyle(style);  
  70.     }  
  71.       
  72.     public HSSFCellStyle getStyle(HSSFWorkbook workbook) {  
  73.         //設置字體;  
  74.         HSSFFont font = workbook.createFont();  
  75.         //設置字體大小;  
  76.         font.setFontHeightInPoints((short5);  
  77.         //設置字體名字;  
  78.         font.setFontName("Courier New");  
  79.         //font.setItalic(true);  
  80.         //font.setStrikeout(true);  
  81.         //設置樣式;  
  82.         HSSFCellStyle style = workbook.createCellStyle();  
  83.         //設置底邊框;  
  84.         style.setBorderBottom(HSSFCellStyle.BORDER_THIN);  
  85.         //設置底邊框顏色;  
  86.         style.setBottomBorderColor(HSSFColor.BLACK.index);  
  87.         //設置左邊框;  
  88.         style.setBorderLeft(HSSFCellStyle.BORDER_THIN);  
  89.         //設置左邊框顏色;  
  90.         style.setLeftBorderColor(HSSFColor.BLACK.index);  
  91.         //設置右邊框;  
  92.         style.setBorderRight(HSSFCellStyle.BORDER_THIN);  
  93.         //設置右邊框顏色;  
  94.         style.setRightBorderColor(HSSFColor.BLACK.index);  
  95.         //設置頂邊框;  
  96.         style.setBorderTop(HSSFCellStyle.BORDER_THIN);  
  97.         //設置頂邊框顏色;  
  98.         style.setTopBorderColor(HSSFColor.BLACK.index);  
  99.         //在樣式用應用設置的字體;  
  100.         style.setFont(font);  
  101.         //設置自動換行;  
  102.         style.setWrapText(false);  
  103.         //設置水平對齊的樣式爲居中對齊;  
  104.         style.setAlignment(HSSFCellStyle.ALIGN_CENTER);  
  105.         //設置垂直對齊的樣式爲居中對齊;  
  106.         style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);  
  107.         return style;  
  108.     }  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章