<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項(xiàng)目的POI子項(xiàng)目,目標(biāo)是處理ole2對象。 POI可以到 http://www.apache.org/dyn/closer.cgi/jakarta/poi/ 下載。 編譯好的jar主要有這樣4個(gè):poi包,poi Browser包,poi hdf包,poi hssf例程包。實(shí)際運(yùn)行時(shí),需要有poi包就可以了。

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

    在poi1.7中才有以下2項(xiàng):
    HSSFHeader sheet頭
    HSSFFooter sheet尾

    和這個(gè)樣式
    HSSFCellStyle cell樣式

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

    下面是一個(gè)簡單的例子:

    /**
    ?*?
    ?
    */

    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;

    /**
    ?*?生成導(dǎo)出Excel文件對象
    ?*?
    ?*?
    @author ?John.Zhu
    ?*?
    ?
    */

    public ? class ?XLSExport? {

    ????
    // ?設(shè)置cell編碼解決中文高位字節(jié)截?cái)?/span>

    ???? private ? static ? short ?XLS_ENCODING? = ?HSSFWorkbook.ENCODING_UTF_16;

    ????
    // ?定制日期格式

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

    ????
    // ?定制浮點(diǎn)數(shù)格式

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

    ????
    private
    ?String?xlsFileName;

    ????
    private
    ?HSSFWorkbook?workbook;

    ????
    private
    ?HSSFSheet?sheet;

    ????
    private
    ?HSSFRow?row;

    ????
    /**
    ?????*?初始化Excel
    ?????*?
    ?????*?
    @param ?fileName
    ?????*????????????導(dǎo)出文件名
    ?????
    */

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


    ????
    /**
    ?????*?導(dǎo)出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( " 生成導(dǎo)出Excel文件出錯(cuò)! "
    ,?e);
    ????????}
    ? catch ?(IOException?e)? {
    ????????????
    throw ? new ?XLSException( " 寫入Excel文件出錯(cuò)! "
    ,?e);
    ????????}


    ????}


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

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


    ????
    /**
    ?????*?設(shè)置單元格
    ?????*?
    ?????*?
    @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);
    ????}


    ????
    /**
    ?????*?設(shè)置單元格
    ?????*?
    ?????*?
    @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));? // ?設(shè)置cell樣式為定制的日期格式
    ????????cell.setCellStyle(cellStyle);? // ?設(shè)置該cell日期的顯示格式
    ????}


    ????
    /**
    ?????*?設(shè)置單元格
    ?????*?
    ?????*?
    @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);
    ????}


    ????
    /**
    ?????*?設(shè)置單元格
    ?????*?
    ?????*?
    @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));?
    // ?設(shè)置cell樣式為定制的浮點(diǎn)數(shù)格式

    ????????cell.setCellStyle(cellStyle);? // ?設(shè)置該cell浮點(diǎn)數(shù)的顯示格式
    ????}


    }

    調(diào)用的過程:
    /**
    ?*?
    ?
    */

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

    import
    ?java.util.Calendar;

    /**
    ?*?導(dǎo)出Excel示例
    ?*?
    ?*?
    @author ?John.Zhu
    ?*?
    ?
    */

    public ? class ?XLSDemo? {

    ????
    public ? static ? void ?main(String[]?args)?
    {
    ????????System.out.println(
    " 開始導(dǎo)出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(
    " 導(dǎo)出Excel文件[成功] "
    );
    ????????}
    ? catch ?(XLSException?e1)? {
    ????????????System.out.println(
    " 導(dǎo)出Excel文件[失敗] "
    );
    ????????????e1.printStackTrace();
    ????????}

    ????}

    }

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

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

    評論

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

    POI不能支持圖片啊  回復(fù)  更多評論   

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

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

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

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

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

    這個(gè)資料比較好,謝謝提供.特此感謝  回復(fù)  更多評論   

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

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

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

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

    導(dǎo)航

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

    統(tǒng)計(jì)

    常用鏈接

    留言簿(15)

    隨筆分類

    隨筆檔案

    相冊

    收藏夾

    博客

    文檔

    站點(diǎn)

    論壇

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 91在线视频免费看| 亚洲字幕在线观看| 国产一级理论免费版| 久久久久久影院久久久久免费精品国产小说 | 国产又大又黑又粗免费视频| 久久久久成人片免费观看蜜芽| 全部在线播放免费毛片| 亚洲色少妇熟女11p| 亚洲美女aⅴ久久久91| 久久亚洲国产午夜精品理论片| 国产免费午夜a无码v视频| 人禽杂交18禁网站免费| 精品熟女少妇av免费久久| 任你躁在线精品免费| 九一在线完整视频免费观看| 亚洲第一成年网站视频| 亚洲AV色吊丝无码| 亚洲精品国产第1页| 亚洲AV无码1区2区久久| 亚洲乱码国产一区三区| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 亚洲精品无码Av人在线观看国产| 免费欧洲美女牲交视频| 四虎在线免费播放| 一个人免费观看在线视频www| 18女人水真多免费高清毛片| 美女视频黄a视频全免费网站色窝| 一个人看的免费视频www在线高清动漫| 亚洲AⅤ男人的天堂在线观看| 亚洲粉嫩美白在线| 亚洲色偷偷色噜噜狠狠99网| 亚洲欧好州第一的日产suv| 国产亚洲精品影视在线| 亚洲综合色区中文字幕| 亚洲一区二区三区亚瑟| 亚洲日本乱码卡2卡3卡新区| 亚洲人AV在线无码影院观看| 亚洲高清毛片一区二区| 黄网站色成年片大免费高清| 一级一级一级毛片免费毛片| 中文字幕免费观看全部电影|