<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Dev@Free

    zJun's Tech Weblog

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

    ????}

    }

    參考文檔: http://jakarta.apache.org/poi/hssf/quick-guide.html

    posted on 2007-01-22 17:59 zJun's帛羅閣 閱讀(22229) 評論(6)  編輯  收藏 所屬分類: 開發環境

    評論

    # re: 使用POI生成Excel文件 2007-01-23 12:07 Welkin Hu

    POI不能支持圖片啊  回復  更多評論   

    # re: 使用POI生成Excel文件 2007-01-23 23:30 小車馬

    恩,非常好,還是用開源的東東,呵呵,
    樓主,潛力貼論壇(http://content.uu1001.com)是我個人的一個設想,如果你對java非常的專注,并且愿意交我這個朋友,可以發郵件給我(lbw070105@gmail.com),希望我們可以一起發展它。  回復  更多評論   

    # re: 使用POI生成Excel文件 2007-01-25 09:45 dixson

    個人覺得POI沒有JXL好用.而且POI...很~~~~久沒有更新了.開發者根本不重視POI的HSSF啊.  回復  更多評論   

    # re: 使用POI生成Excel文件[未登錄] 2007-03-12 11:51 魔力天使

    這個資料比較好,謝謝提供.特此感謝  回復  更多評論   

    # re: 使用POI生成Excel文件 2008-04-16 13:43 峨峨

    好東西,頂!不過生成excel表格的時間有問題  回復  更多評論   

    # re: 使用POI生成Excel文件 2009-12-10 19:17 zou-hong

    為什么我用上面的代碼運行,控制臺顯示成功,但是沒有生成test.xls文件,這是為什么啊?我用的是Excel2003的版本是不是和這有關系啊?  回復  更多評論   

    導航

    <2007年1月>
    31123456
    78910111213
    14151617181920
    21222324252627
    28293031123
    45678910

    統計

    常用鏈接

    留言簿(15)

    隨筆分類

    隨筆檔案

    相冊

    收藏夾

    博客

    文檔

    站點

    論壇

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 四虎免费影院ww4164h| 亚洲色图国产精品| 岛国av无码免费无禁网站| a级毛片免费观看在线| 国产亚洲中文日本不卡二区| 亚洲人成色7777在线观看| 日韩一级在线播放免费观看| 91精品国产免费久久国语蜜臀| xxxxx做受大片视频免费| 亚洲hairy多毛pics大全| 亚洲国产高清在线精品一区 | 国产精品亚洲精品日韩电影| 波多野结衣视频在线免费观看| 97热久久免费频精品99| 深夜福利在线免费观看| 亚洲日韩精品无码专区加勒比| 亚洲天堂一区在线| 亚洲综合精品香蕉久久网97| 国产AV无码专区亚洲AV男同| 国产a视频精品免费观看| 久久免费视频99| 亚洲精品无码久久久久久| 亚洲国产日韩女人aaaaaa毛片在线| 亚洲成a人片在线观看久| 免费看美女被靠到爽| 国产在线国偷精品产拍免费| 3d成人免费动漫在线观看| 男性gay黄免费网站| 亚洲国产精品日韩av不卡在线| 国产成+人+综合+亚洲专| 中文字幕亚洲无线码| 亚洲成av人在片观看| 亚洲A∨午夜成人片精品网站| 日韩在线免费看网站| 免费看片A级毛片免费看| 啦啦啦www免费视频| 韩国欧洲一级毛片免费| 香蕉高清免费永久在线视频| 国产精品va无码免费麻豆| 又粗又硬免费毛片| 亚洲精品一级无码中文字幕|