<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á)彼岸

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

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

    使用如下:

    搭建環(huán)境

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

    ?基本操作

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

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

    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 ? {
    ????????????
    // ?打開文件
    ????????????WritableWorkbook?book? = ?Workbook.createWorkbook( new ?File( " test.xls " ));
    ????????????
    // ?生成名為“第一頁”的工作表,參數(shù)0表示這是第一頁
    ????????????WritableSheet?sheet? = ?book.createSheet( " 第一頁 " ,? 0 );
    ????????????
    // ?在Label對(duì)象的構(gòu)造子中指名單元格位置是第一列第一行(0,0)
    ????????????
    // ?以及單元格內(nèi)容為test
    ????????????Label?label? = ? new ?Label( 0 ,? 0 ,? " test " );

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

    ????????????
    /*
    ?????????????*?生成一個(gè)保存數(shù)字的單元格?必須使用Number的完整包路徑,否則有語法歧義?單元格位置是第二列,第一行,值為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è)簡單的讀取操作,程序代碼如下:

    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í)候,除了打開文件的方式不同之外,
    ?其他操作和創(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 " ));
    ????????????
    // ?打開一個(gè)文件的副本,并且指定數(shù)據(jù)寫回到原文件
    ????????????WritableWorkbook?book? = ?Workbook.createWorkbook( new ?File( " test.xls " ),
    ????????????????????wb);
    ????????????
    // ?添加一個(gè)工作表
    ????????????WritableSheet?sheet? = ?book.createSheet( " 第二頁 " ,? 1 );
    ????????????sheet.addCell(
    new ?Label( 0 ,? 0 ,? " 第二頁的測試數(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類來負(fù)責(zé)。假設(shè)我們?cè)谏梢粋€(gè)含有字串的單元格時(shí),使用如下語句,
    ?為方便敘述,我們?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è)類非常重要,通過它可以指定單元格的各種
    ?屬性,后面的單元格格式化中會(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ì)比較簡單,下面只介紹一下相關(guān)的API。

    ?1、 合并單元格

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

    ?
    // 作用是從(m,n)到(p,q)的單元格全部合并,比如:
    ?WritableSheet?sheet = book.createSheet(“第一頁”, 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( " 測試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
    簡明扼要,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
    太精簡了,簡單易懂,精華,謝謝!!!  回復(fù)  更多評(píng)論
      

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

    聯(lián)系偶 zhupanjava@gmail.com 溫柔一刀
    主站蜘蛛池模板: 亚洲网红精品大秀在线观看| 99视频在线精品免费| 亚洲美女一区二区三区| 国产成人亚洲影院在线观看| 最近免费中文字幕大全| 免费看又黄又无码的网站| 一级人做人爰a全过程免费视频 | 丰满少妇作爱视频免费观看| 亚洲成年网站在线观看| 亚洲高清视频在线播放| 久久亚洲国产视频| 亚洲色欲色欲www在线丝| 四虎免费久久影院| 在线观看亚洲免费| 毛片a级毛片免费播放下载| 亚色九九九全国免费视频| 无码成A毛片免费| 国产成年无码久久久免费| 成在线人视频免费视频| caoporn国产精品免费| 美女尿口扒开图片免费| 亚洲欧美熟妇综合久久久久| 国产成人精品日本亚洲直接| 亚洲午夜电影在线观看| 亚洲日本在线免费观看| 亚洲高清日韩精品第一区| 久久精品国产亚洲精品2020| 亚洲国产精品婷婷久久| 亚洲国产成人久久综合一| 久久精品国产亚洲av成人| 国产AV无码专区亚洲AV毛网站| 亚洲日本va在线视频观看| 亚洲国产另类久久久精品小说| 国产国拍亚洲精品福利| 亚洲中文字幕日产乱码高清app| 久久99亚洲综合精品首页| 亚洲色欲色欲www在线丝| 亚洲国产精品无码久久久秋霞2| 亚洲s色大片在线观看| 亚洲va在线va天堂va不卡下载| 亚洲天天做日日做天天看|