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

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

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

    隨筆-28  評論-15  文章-81  trackbacks-0
          jxl是一個韓國人寫的java操作excel的工具在開源世界中,有兩套比較有影響的API可供使用,一個是POI,一個是jExcelAPI。其中功能相對POI比較弱一點。但jExcelAPI對中文支持非常好,API是純Java的, 并不依賴Windows系統,即使運行在Linux下,它同樣能夠正確的處理Excel文件。 另外需要說明的是,這套API對圖形和圖表的支持很有限,而且僅僅識別PNG格式。

    使用如下:

    搭建環境

     將下載后的文件解包,得到jxl.jar,放入classpath,安裝就完成了。

     基本操作

     一、創建文件

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

    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 " ));
                
    //  
    生成名為第一頁的工作表,參數0表示這是第一頁
                WritableSheet sheet  =  book.createSheet( "
    第一頁 " 0 );
                
    //  
    Label對象的構造子中指名單元格位置是第一列第一行(0,0)
                
    //  以及單元格內容為test
                Label label  =   new  Label( 0 0 " test " );

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

                
    /*
                 * 
    生成一個保存數字的單元格 必須使用Number的完整包路徑,否則有語法歧義 單元格位置是第二列,第一行,值為789.123
                 
    */
                jxl.write.Number number 
    =   new  jxl.write.Number( 1 0 555.12541 );
                sheet.addCell(number);

                
    //  
    寫入數據并關閉文件
                book.write();
                book.close();

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

        }

    }

       編譯執行后,會產生一個Excel文件。

     三、讀取文件

     以剛才我們創建的Excel文件為例,做一個簡單的讀取操作,程序代碼如下:

    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 " ));
                
    //  
    獲得第一個工作表對象
                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);
            }

        }

    }


      
    程序執行結果:test

     四、修改文件
     
    利用jExcelAPI可以修改已有的Excel文件,修改Excel文件的時候,除了打開文件的方式不同之外,
     
    其他操作和創建Excel是一樣的。下面的例子是在我們已經生成的Excel文件中添加一個工作表:

    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 " ));
                
    //  
    打開一個文件的副本,并且指定數據寫回到原文件
                WritableWorkbook book  =  Workbook.createWorkbook( new  File( " test.xls " ),
                        wb);
                
    //  
    添加一個工作表
                WritableSheet sheet  =  book.createSheet( "
    第二頁 " 1 );
                sheet.addCell(
    new  Label( 0 0 "
    第二頁的測試數據 " ));
                book.write();
                book.close();
            }   catch  (Exception e)  {
                System.out.println(e);
            }

        }

    }


    其他操作

     一、數據格式化

     Excel中不涉及復雜的數據類型,能夠比較好的處理字串、數字和日期已經能夠滿足一般的應用。

     1字串格式化

     字符串的格式化涉及到的是字體、粗細、字號等元素,這些功能主要由WritableFont
     WritableCellFormat
    類來負責。假設我們在生成一個含有字串的單元格時,使用如下語句,
     
    為方便敘述,我們為每一行命令加了編號:

    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,字號16,加粗顯示。WritableFont有非常豐富的
     
    構造子,供不同情況下使用,jExcelAPIjava-doc中有詳細列表,這里不再列出。

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

     處使用了Label類的構造子,指定了字串被賦予那種格式。

     WritableCellFormat類中,還有一個很重要的方法是指定數據的對齊方式,比如針對我們
     
    上面的實例,可以指定:

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

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

    二、單元格操作

     Excel中很重要的一部分是對單元格的操作,比如行高、列寬、單元格合并等,所幸jExcelAPI
     
    提供了這些支持。這些操作相對比較簡單,下面只介紹一下相關的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 );

     合并既可以是橫向的,也可以是縱向的。合并后的單元格不能再次進行合并,否則會觸發異常。

     2行高和列寬

     WritableSheet.setRowView( int  i, int  height);

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

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

     WritableSheet.setColumnView(
    int  i, int  width);

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

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

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

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

    Workbook book  =  Workbook.getWorkbook( new  File( " 測試1.xls " ));
            
    //  
    獲得第一個工作表對象
            Sheet sheet  =  book.getSheet( 0 );
            
    //  
    得到第一列第一行的單元格
             int  columnum  =  sheet.getColumns(); //  
    得到列數
             int  rownum  =  sheet.getRows(); //  
    得到行數
            System.out.println(columnum);
            System.out.println(rownum);
            
    for  ( int  i  =   0 ; i  <  rownum; i ++ ) //  
    循環進行讀寫
             {
                 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 2007-10-10 20:45 譚明 閱讀(599) 評論(0)  編輯  收藏 所屬分類: Java
    主站蜘蛛池模板: 亚洲中文字幕一二三四区| 亚洲中文字幕无码中文字| 99久久综合精品免费| 亚洲熟妇无码AV| 亚洲中文字幕伊人久久无码| 国产午夜精品免费一区二区三区| 亚洲乱码无限2021芒果 | 亚洲人成无码网WWW| 91精品手机国产免费| 亚洲成a∨人片在无码2023 | 成**人免费一级毛片| 中文字幕的电影免费网站| 激情综合亚洲色婷婷五月APP| 亚洲国产精品毛片av不卡在线 | 欧美a级成人网站免费| 日韩在线视频播放免费视频完整版| 亚洲精品视频在线观看视频| 亚洲国产小视频精品久久久三级 | 免费无遮挡无码永久在线观看视频| 国产午夜无码精品免费看动漫| 亚洲国产aⅴ成人精品无吗| 亚洲国产精品一区第二页 | 日韩一级视频免费观看| 性xxxxx大片免费视频| 日韩久久无码免费毛片软件| 亚洲人成电影在线观看青青| 三上悠亚亚洲一区高清| 成人毛片免费观看视频| 午夜视频免费在线观看| 一级毛片在线播放免费| 亚洲成av人片在www鸭子| 亚洲宅男天堂a在线| 久久精品亚洲中文字幕无码网站 | 亚洲日韩国产一区二区三区在线| 亚洲AV无码久久精品成人| 亚洲精品无码专区2| 日本不卡免费新一二三区| 1024免费福利永久观看网站| 91免费国产精品| 国产三级在线免费| 9久久免费国产精品特黄|