當柳上原的風吹向天際的時候...

          真正的快樂來源于創造

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            368 Posts :: 1 Stories :: 201 Comments :: 0 Trackbacks
          說明:
          1.下載http://www.apache.org/dyn/closer.cgi/poi/release/bin/poi-bin-3.7-20101029.zip后,將poi-3.7目錄下的jar包放入lib目錄, 再將此工程載入Eclipse/MyEclipse即可。
          2.界面中文本框供輸出數據量用,在我的T410上測試數據量在3.5W~3.6W之間,再多就報java.lang.OutOfMemoryError錯誤。附帶提一下輸出數據量的問題,如果修飾單元格的代碼越簡單,那么能輸出的數據就越多,反之數據就少了。
          3.主要代碼如下:

          Sevlet代碼:
          package com.heyang.action;


          import java.io.BufferedOutputStream;

          import javax.servlet.ServletException;
          import javax.servlet.ServletOutputStream;
          import javax.servlet.http.HttpServlet;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;

          import org.apache.poi.hssf.usermodel.HSSFWorkbook;

          import com.heyang.service.DownloadService;

          /**
           * POI下載的Servlet
           * 
          @author heyang
           *
           
          */
          public class DownloadServlet extends HttpServlet {
              
          private static final long serialVersionUID = 56890894234786L;
              
              
          public void doPost(HttpServletRequest request, HttpServletResponse response)
                      
          throws ServletException, java.io.IOException {
                  String fileName
          ="download.xls";
                  response.setHeader(
          "Content-disposition""attachment; filename="+fileName);// 設定輸出文件頭   
                  response.setContentType("application/msexcel");// 定義輸出類型 
                  
                  
          try{
                      
          int rowCount=Integer.parseInt(request.getParameter("rowCount"));
                      
                      
          // 表頭行
                      String[] headers=new String[]{"更新ID","賬期","基站編號","基站名稱","站點狀態","部門名稱","站點類型","占用類型","預提(元)","未核銷金額","上期未核銷","開始月份","結束月份","上期抄表數","本期抄表數","電價","電量","本期報賬(元)","補提(元)","預提匯總(元)","成本中心","專業","本期報賬單號","基站類別","線損"};
                      DownloadService service
          =new DownloadService();

                      HSSFWorkbook workbook
          =service.generateWorkbook(rowCount, headers.length);

                      ServletOutputStream out 
          = response.getOutputStream();
                      BufferedOutputStream bos 
          = new BufferedOutputStream(out);        
                      workbook.write(bos);
                      bos.flush();
                      bos.close();
                      
                  }
          catch(Exception ex){
                      ex.printStackTrace();
                  }
                  
                  
          return ;
              }
                  
              
          public void doGet(HttpServletRequest request, HttpServletResponse response)
                      
          throws ServletException, java.io.IOException {
                  doPost(request, response);
              }
          }

          Service代碼:
          package com.heyang.service;

          import org.apache.poi.hssf.usermodel.HSSFCell;
          import org.apache.poi.hssf.usermodel.HSSFRow;
          import org.apache.poi.hssf.usermodel.HSSFSheet;
          import org.apache.poi.hssf.usermodel.HSSFWorkbook;


          /**
           * 下載服務類
           * 
           * 
          @author heyang
           *
           
          */
          public class DownloadService{
              
          /**
               * 生成工作簿對象
               * 
          @param rowCount
               * 
          @param columnCount
               * 
          @return
               
          */
              
          public HSSFWorkbook generateWorkbook(int rowCount,int columnCount) throws Exception{
                  HSSFWorkbook workbook 
          = new HSSFWorkbook(); //產生工作簿對象
                  HSSFSheet sheet = workbook.createSheet(); //產生工作表對象
                  String value=null;
                  
                  HSSFRow row 
          = null;
                  HSSFCell cell 
          = null;
                  
                  
          for(int i=0;i<rowCount;i++){
                      row 
          = sheet.createRow(i);//創建一行
                      
                      
          for(int j=0;j<columnCount;j++){
                          value
          =""+i+","+j;
                          
                          cell 
          = row.createCell(j);
                          cell.setCellValue(value);
                          
                          cell 
          = null;
                      }
                      
                      row 
          = null;
                  }
                  
                  row 
          = null;
                  cell 
          = null;
                  
                  
          return workbook;
              }
          }

          4.工程下載地址:
          posted on 2012-02-01 15:48 何楊 閱讀(770) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 永丰县| 辰溪县| 宣城市| 桂林市| 舟曲县| 灵武市| 四平市| 宽城| 东丽区| 剑阁县| 时尚| 兴文县| 三亚市| 文水县| 江都市| 章丘市| 横山县| 尤溪县| 黄浦区| 都江堰市| 永昌县| 仁寿县| 莆田市| 黄梅县| 仁怀市| 丹东市| 额尔古纳市| 宁安市| 广灵县| 乌鲁木齐县| 屏东市| 兴安盟| 沂源县| 务川| 建阳市| 锡林郭勒盟| 邹城市| 晋宁县| 禄丰县| 乌兰察布市| 微山县|