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

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

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

    e代劍客——溫柔一刀

    生活就像海洋,只有意志堅(jiān)強(qiáng)的人,才能到達(dá)彼岸

       :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      76 隨筆 :: 7 文章 :: 215 評(píng)論 :: 0 Trackbacks

    jxl是一個(gè)韓國(guó)人寫的java操作excel的工具,?在開(kāi)源世界中,有兩套比較有影響的API可供使用,一個(gè)是POI,一個(gè)是jExcelAPI。其中功能相對(duì)POI比較弱一點(diǎn)。但jExcelAPI對(duì)中文支持非常好,API是純Java的,?并不依賴Windows系統(tǒng),即使運(yùn)行在Linux下,它同樣能夠正確的處理Excel文件。?另外需要說(shuō)明的是,這套API對(duì)圖形和圖表的支持很有限,而且僅僅識(shí)別PNG格式。

    使用如下:

    搭建環(huán)境

    ?將下載后的文件解包,得到j(luò)xl.jar,放入classpath,安裝就完成了。

    ?基本操作

    ?一、創(chuàng)建文件

    ?擬生成一個(gè)名為“test.xls”的Excel文件,其中第一個(gè)工作表被命名為
    ?“第一頁(yè)”,大致效果如下:

    package ?test;

    // 生成Excel的類
    import ?java.io.File;

    import ?jxl.Workbook;
    import ?jxl.write.Label;
    import ?jxl.write.WritableSheet;
    import ?jxl.write.WritableWorkbook;

    public ? class ?CreateExcel? {
    ????
    public ? static ? void ?main(String?args[])? {
    ????????
    try ? {
    ????????????
    // ?打開(kāi)文件
    ????????????WritableWorkbook?book? = ?Workbook.createWorkbook( new ?File( " test.xls " ));
    ????????????
    // ?生成名為“第一頁(yè)”的工作表,參數(shù)0表示這是第一頁(yè)
    ????????????WritableSheet?sheet? = ?book.createSheet( " 第一頁(yè) " ,? 0 );
    ????????????
    // ?在Label對(duì)象的構(gòu)造子中指名單元格位置是第一列第一行(0,0)
    ????????????
    // ?以及單元格內(nèi)容為test
    ????????????Label?label? = ? new ?Label( 0 ,? 0 ,? " test " );

    ????????????
    // ?將定義好的單元格添加到工作表中
    ????????????sheet.addCell(label);

    ????????????
    /*
    ?????????????*?生成一個(gè)保存數(shù)字的單元格?必須使用Number的完整包路徑,否則有語(yǔ)法歧義?單元格位置是第二列,第一行,值為789.123
    ?????????????
    */

    ????????????jxl.write.Number?number?
    = ? new ?jxl.write.Number( 1 ,? 0 ,? 555.12541 );
    ????????????sheet.addCell(number);

    ????????????
    // ?寫入數(shù)據(jù)并關(guān)閉文件
    ????????????book.write();
    ????????????book.close();

    ????????}
    ? catch ?(Exception?e)? {
    ????????????System.out.println(e);
    ????????}

    ????}

    }

    ???編譯執(zhí)行后,會(huì)產(chǎn)生一個(gè)Excel文件。

    ?三、讀取文件

    ?以剛才我們創(chuàng)建的Excel文件為例,做一個(gè)簡(jiǎn)單的讀取操作,程序代碼如下:

    package ?test;

    // 讀取Excel的類
    import ?java.io.File;

    import ?jxl.Cell;
    import ?jxl.Sheet;
    import ?jxl.Workbook;

    public ? class ?ReadExcel? {
    ????
    public ? static ? void ?main(String?args[])? {
    ????????
    try ? {
    ????????????Workbook?book?
    = ?Workbook.getWorkbook( new ?File( " test.xls " ));
    ????????????
    // ?獲得第一個(gè)工作表對(duì)象
    ????????????Sheet?sheet? = ?book.getSheet( 0 );
    ????????????
    // ?得到第一列第一行的單元格
    ????????????Cell?cell1? = ?sheet.getCell( 0 ,? 0 );
    ????????????String?result?
    = ?cell1.getContents();
    ????????????System.out.println(result);
    ????????????book.close();
    ????????}
    ? catch ?(Exception?e)? {
    ????????????System.out.println(e);
    ????????}

    ????}

    }


    ??程序執(zhí)行結(jié)果:test

    ?四、修改文件
    ?利用jExcelAPI可以修改已有的Excel文件,修改Excel文件的時(shí)候,除了打開(kāi)文件的方式不同之外,
    ?其他操作和創(chuàng)建Excel是一樣的。下面的例子是在我們已經(jīng)生成的Excel文件中添加一個(gè)工作表:

    package ?test;

    import ?java.io.File;

    import ?jxl.Workbook;
    import ?jxl.write.Label;
    import ?jxl.write.WritableSheet;
    import ?jxl.write.WritableWorkbook;

    public ? class ?UpdateExcel? {
    ????
    public ? static ? void ?main(String?args[])? {
    ????????
    try ? {
    ????????????
    // ?Excel獲得文件
    ????????????Workbook?wb? = ?Workbook.getWorkbook( new ?File( " test.xls " ));
    ????????????
    // ?打開(kāi)一個(gè)文件的副本,并且指定數(shù)據(jù)寫回到原文件
    ????????????WritableWorkbook?book? = ?Workbook.createWorkbook( new ?File( " test.xls " ),
    ????????????????????wb);
    ????????????
    // ?添加一個(gè)工作表
    ????????????WritableSheet?sheet? = ?book.createSheet( " 第二頁(yè) " ,? 1 );
    ????????????sheet.addCell(
    new ?Label( 0 ,? 0 ,? " 第二頁(yè)的測(cè)試數(shù)據(jù) " ));
    ????????????book.write();
    ????????????book.close();
    ????????}
    ? catch ?(Exception?e)? {
    ????????????System.out.println(e);
    ????????}

    ????}

    }


    其他操作

    ?一、 數(shù)據(jù)格式化

    ?在Excel中不涉及復(fù)雜的數(shù)據(jù)類型,能夠比較好的處理字串、數(shù)字和日期已經(jīng)能夠滿足一般的應(yīng)用。

    ?1、 字串格式化

    ?字符串的格式化涉及到的是字體、粗細(xì)、字號(hào)等元素,這些功能主要由WritableFont和
    ?WritableCellFormat類來(lái)負(fù)責(zé)。假設(shè)我們?cè)谏梢粋€(gè)含有字串的單元格時(shí),使用如下語(yǔ)句,
    ?為方便敘述,我們?yōu)槊恳恍忻罴恿司幪?hào):

    WritableFont?font1 =
    ?
    new ?WritableFont(WritableFont.TIMES, 16 ,WritableFont.BOLD);?①

    ?WritableCellFormat?format1
    = new ?WritableCellFormat(font1);?②

    ?Label?label
    = new ?Label( 0 , 0 ,”data? 4 ?test”,format1)?③

    ??其中①指定了字串格式:字體為TIMES,字號(hào)16,加粗顯示。WritableFont有非常豐富的
    ?構(gòu)造子,供不同情況下使用,jExcelAPI的java-doc中有詳細(xì)列表,這里不再列出。

    ?②處代碼使用了WritableCellFormat類,這個(gè)類非常重要,通過(guò)它可以指定單元格的各種
    ?屬性,后面的單元格格式化中會(huì)有更多描述。

    ?③處使用了Label類的構(gòu)造子,指定了字串被賦予那種格式。

    ?在WritableCellFormat類中,還有一個(gè)很重要的方法是指定數(shù)據(jù)的對(duì)齊方式,比如針對(duì)我們
    ?上面的實(shí)例,可以指定:

    ? // 把水平對(duì)齊方式指定為居中
    ?format1.setAlignment(jxl.format.Alignment.CENTRE);

    ?
    // 把垂直對(duì)齊方式指定為居中
    ?format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);

    二、單元格操作

    ?Excel中很重要的一部分是對(duì)單元格的操作,比如行高、列寬、單元格合并等,所幸jExcelAPI
    ?提供了這些支持。這些操作相對(duì)比較簡(jiǎn)單,下面只介紹一下相關(guān)的API。

    ?1、 合并單元格

    ?WritableSheet.mergeCells( int ?m, int ?n, int ?p, int ?q);?

    ?
    // 作用是從(m,n)到(p,q)的單元格全部合并,比如:
    ?WritableSheet?sheet = book.createSheet(“第一頁(yè)”, 0 );

    ?
    // 合并第一列第一行到第六列第一行的所有單元格
    ?sheet.mergeCells( 0 , 0 , 5 , 0 );

    ?合并既可以是橫向的,也可以是縱向的。合并后的單元格不能再次進(jìn)行合并,否則會(huì)觸發(fā)異常。

    ?2、 行高和列寬

    ?WritableSheet.setRowView( int ?i, int ?height);

    ?
    // 作用是指定第i+1行的高度,比如:

    ?
    // 將第一行的高度設(shè)為200
    ?sheet.setRowView( 0 , 200 );

    ?WritableSheet.setColumnView(
    int ?i, int ?width);

    ?
    // 作用是指定第i+1列的寬度,比如:

    ?
    // 將第一列的寬度設(shè)為30
    ?sheet.setColumnView( 0 , 30 );

    ?jExcelAPI還有其他的一些功能,比如插入圖片等,這里就不再一一介紹,讀者可以自己探索。

    其中:如果讀一個(gè)excel,需要知道它有多少行和多少列,如下操作:

    Workbook?book? = ?Workbook.getWorkbook( new ?File( " 測(cè)試1.xls " ));
    ????????
    // ?獲得第一個(gè)工作表對(duì)象
    ????????Sheet?sheet? = ?book.getSheet( 0 );
    ????????
    // ?得到第一列第一行的單元格
    ???????? int ?columnum? = ?sheet.getColumns(); // ?得到列數(shù)
    ???????? int ?rownum? = ?sheet.getRows(); // ?得到行數(shù)
    ????????System.out.println(columnum);
    ????????System.out.println(rownum);
    ????????
    for ?( int ?i? = ? 0 ;?i? < ?rownum;?i ++ ) // ?循環(huán)進(jìn)行讀寫
    ???????? {
    ????????????
    for ?( int ?j? = ? 0 ;?j? < ?columnum;?j ++ )? {
    ????????????????Cell?cell1?
    = ?sheet.getCell(j,?i);
    ????????????????String?result?
    = ?cell1.getContents();
    ????????????????System.out.print(result);
    ????????????????System.out.print(
    " \t " );
    ????????????}

    ????????????System.out.println();
    ????????}

    ????????book.close();
    posted on 2006-10-07 11:04 溫柔一刀 閱讀(6481) 評(píng)論(5)  編輯  收藏 所屬分類: java相關(guān)

    評(píng)論

    # re: JXL操作Excel 2006-10-27 18:19 junitfans
    Thanks  回復(fù)  更多評(píng)論
      

    # re: JXL操作Excel 2007-09-02 01:50 10:10
    簡(jiǎn)明扼要,thx,hehe  回復(fù)  更多評(píng)論
      

    # re: JXL操作Excel 2007-12-27 12:19 weee
    good  回復(fù)  更多評(píng)論
      

    # re: JXL操作Excel 2008-01-08 17:33 cole
    太精簡(jiǎn)了,簡(jiǎn)單易懂,精華,謝謝?。。?nbsp; 回復(fù)  更多評(píng)論
      

    # re: JXL操作Excel[未登錄](méi) 2008-05-29 11:49 蘋果
    簡(jiǎn)練!精煉!易懂! 好東西,值得學(xué)習(xí)!  回復(fù)  更多評(píng)論
      

    聯(lián)系偶 zhupanjava@gmail.com 溫柔一刀
    主站蜘蛛池模板: 亚洲av乱码一区二区三区| 亚洲中文字幕久久精品无码喷水| 在线观看免费为成年视频| 免费精品一区二区三区在线观看| 日韩在线免费电影| 亚洲精品乱码久久久久久蜜桃 | 亚洲最大的视频网站| 亚洲乱码中文论理电影| 国产精品国产亚洲区艳妇糸列短篇| 污视频网站在线观看免费| a级在线免费观看| 国色精品卡一卡2卡3卡4卡免费| 成人毛片18女人毛片免费视频未 | 日韩国产欧美亚洲v片| 亚洲免费无码在线| 67194成手机免费观看| 女人张腿给男人桶视频免费版| 亚洲不卡AV影片在线播放| 久久精品亚洲日本佐佐木明希| 亚洲三级视频在线观看| 曰批免费视频播放免费| 外国成人网在线观看免费视频| 成人超污免费网站在线看| 久久久久一级精品亚洲国产成人综合AV区 | 亚洲日本一区二区一本一道| 亚洲午夜免费视频| 精品亚洲成a人在线观看| 久久精品电影免费动漫| 午夜两性色视频免费网站| 亚洲日韩欧洲乱码AV夜夜摸| 亚洲国产精品一区二区久| 一区二区三区在线免费| 国产片AV片永久免费观看 | 九月婷婷亚洲综合在线| 亚洲情a成黄在线观看动漫尤物| 亚洲AV无码专区国产乱码不卡| 久操免费在线观看| 又粗又黄又猛又爽大片免费| 亚洲首页在线观看| 亚洲高清免费视频| 超pen个人视频国产免费观看|