sooxin-JAVA

          使用POI生成Excel文件

          Apache的Jakata項目的POI子項目,目標是處理ole2對象。 POI可以到 http://www.apache.org/dyn/closer.cgi/jakarta/poi/ 下載。 編譯好的jar主要有這樣4個:poi包,poi Browser包,poi hdf包,poi hssf例程包。實際運行時,需要有poi包就可以了。

          HSSF提供給用戶使用的對象在org.apache.poi.hssf.usermodel包中,主要部分包括Excell對象,樣式和格式,還有輔助操作。有以下幾種對象:
          HSSFWorkbook excell的文檔對象
          HSSFSheet excell的表單
          HSSFRow excell的行
          HSSFCell excell的格子單元
          HSSFFont excell字體
          HSSFName 名稱
          HSSFDataFormat 日期格式

          在poi1.7中才有以下2項:
          HSSFHeader sheet頭
          HSSFFooter sheet尾

          和這個樣式
          HSSFCellStyle cell樣式

          輔助操作包括
          HSSFDateUtil 日期
          HSSFPrintSetup 打印
          HSSFErrorConstants 錯誤信息表

          下面是一個簡單的例子:

          /**
           * 
           
          */

          package  com.justinmobile.payease.admin.commons.excel;

          import
           java.io.FileNotFoundException;
          import
           java.io.FileOutputStream;
          import
           java.io.IOException;
          import
           java.util.Calendar;

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

          /**
           * 生成導出Excel文件對象
           * 
           * 
          @author  John.Zhu
           * 
           
          */

          public   class  XLSExport  {

              
          //  設置cell編碼解決中文高位字節截斷

               private   static   short  XLS_ENCODING  =  HSSFWorkbook.ENCODING_UTF_16;

              
          //  定制日期格式

               private   static  String DATE_FORMAT  =   " m/d/yy " //  "m/d/yy h:mm"

              
          //  定制浮點數格式

               private   static  String NUMBER_FORMAT  =   " #,##0.00 " ;

              
          private
           String xlsFileName;

              
          private
           HSSFWorkbook workbook;

              
          private
           HSSFSheet sheet;

              
          private
           HSSFRow row;

              
          /**
               * 初始化Excel
               * 
               * 
          @param  fileName
               *            導出文件名
               
          */

              
          public  XLSExport(String fileName)  {
                  
          this .xlsFileName  =
           fileName;
                  
          this .workbook  =   new
           HSSFWorkbook();
                  
          this .sheet  =
           workbook.createSheet();
              }


              
          /**
               * 導出Excel文件
               * 
               * 
          @throws  XLSException
               
          */

              
          public   void  exportXLS()  throws  XLSException  {
                  
          try  
          {
                      FileOutputStream fOut 
          =   new
           FileOutputStream(xlsFileName);
                      workbook.write(fOut);
                      fOut.flush();
                      fOut.close();
                  }
            catch  (FileNotFoundException e)  {
                      
          throw   new  XLSException( " 生成導出Excel文件出錯! "
          , e);
                  }
            catch  (IOException e)  {
                      
          throw   new  XLSException( " 寫入Excel文件出錯! "
          , e);
                  }


              }


              
          /**
               * 增加一行
               * 
               * 
          @param  index
               *            行號
               
          */

              
          public   void  createRow( int  index)  {
                  
          this .row  =   this
          .sheet.createRow(index);
              }


              
          /**
               * 設置單元格
               * 
               * 
          @param  index
               *            列號
               * 
          @param
           value
               *            單元格填充值
               
          */

              
          public   void  setCell( int  index, String value)  {
                  HSSFCell cell 
          =   this .row.createCell(( short
          ) index);
                  cell.setCellType(HSSFCell.CELL_TYPE_STRING);
                  cell.setEncoding(XLS_ENCODING);
                  cell.setCellValue(value);
              }


              
          /**
               * 設置單元格
               * 
               * 
          @param  index
               *            列號
               * 
          @param
           value
               *            單元格填充值
               
          */

              
          public   void  setCell( int  index, Calendar value)  {
                  HSSFCell cell 
          =   this .row.createCell(( short
          ) index);
                  cell.setEncoding(XLS_ENCODING);
                  cell.setCellValue(value.getTime());
                  HSSFCellStyle cellStyle 
          =  workbook.createCellStyle();  //  建立新的cell樣式

                  cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat(DATE_FORMAT));  //  設置cell樣式為定制的日期格式
                  cell.setCellStyle(cellStyle);  //  設置該cell日期的顯示格式
              }


              
          /**
               * 設置單元格
               * 
               * 
          @param  index
               *            列號
               * 
          @param
           value
               *            單元格填充值
               
          */

              
          public   void  setCell( int  index,  int  value)  {
                  HSSFCell cell 
          =   this .row.createCell(( short
          ) index);
                  cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
                  cell.setCellValue(value);
              }


              
          /**
               * 設置單元格
               * 
               * 
          @param  index
               *            列號
               * 
          @param
           value
               *            單元格填充值
               
          */

              
          public   void  setCell( int  index,  double  value)  {
                  HSSFCell cell 
          =   this .row.createCell(( short
          ) index);
                  cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
                  cell.setCellValue(value);
                  HSSFCellStyle cellStyle 
          =  workbook.createCellStyle();  //  建立新的cell樣式

                  HSSFDataFormat format  =  workbook.createDataFormat();
                  cellStyle.setDataFormat(format.getFormat(NUMBER_FORMAT)); 
          //  設置cell樣式為定制的浮點數格式

                  cell.setCellStyle(cellStyle);  //  設置該cell浮點數的顯示格式
              }


          }

          調用的過程:
          /**
           * 
           
          */

          package  com.justinmobile.payease.admin.commons.excel;

          import
           java.util.Calendar;

          /**
           * 導出Excel示例
           * 
           * 
          @author  John.Zhu
           * 
           
          */

          public   class  XLSDemo  {

              
          public   static   void  main(String[] args) 
          {
                  System.out.println(
          " 開始導出Excel文件 "
          );
                  XLSExport e 
          =   new  XLSExport( " d:/test.xls "
          );
                  e.createRow(
          0
          );
                  e.setCell(
          0 " 編號 "
          );
                  e.setCell(
          1 " 名稱 "
          );
                  e.setCell(
          2 " 日期 "
          );
                  e.setCell(
          3 " 金額 "
          );
                  e.createRow(
          1
          );
                  e.setCell(
          0 1
          );
                  e.setCell(
          1 " 工商銀行 "
          );
                  e.setCell(
          2
          , Calendar.getInstance());
                  e.setCell(
          3 111123.99
          );
                  e.createRow(
          2
          );
                  e.setCell(
          0 2
          );
                  e.setCell(
          1 " 招商銀行 "
          );
                  e.setCell(
          2
          , Calendar.getInstance());
                  e.setCell(
          3 222456.88
          );
                  
          try  
          {
                      e.exportXLS();
                      System.out.println(
          " 導出Excel文件[成功] "
          );
                  }
            catch  (XLSException e1)  {
                      System.out.println(
          " 導出Excel文件[失敗] "
          );
                      e1.printStackTrace();
                  }

              }

          }

          posted on 2007-12-05 21:34 sooxin 閱讀(1003) 評論(0)  編輯  收藏 所屬分類: JAVA

          主站蜘蛛池模板: 庆城县| 兖州市| 嘉善县| 囊谦县| 响水县| 镇坪县| 彭州市| 龙州县| 四子王旗| 望都县| 德兴市| 曲靖市| 嘉峪关市| 昔阳县| 勃利县| 毕节市| 子长县| 绥宁县| 阳春市| 茌平县| 十堰市| 泰宁县| 静海县| 常宁市| 宁武县| 从化市| 常山县| 瓮安县| 绥中县| 普宁市| 溧阳市| 射洪县| 密山市| 大邑县| 湟中县| 宜兰市| 繁峙县| 长兴县| 普兰店市| 辽宁省| 射阳县|