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();
        }
    }
}

你可能感兴趣的:(apache,Excel,cgi)