JXL操做Excel

jxl是一個韓國人寫的java操做excel的工具, 在開源世界中,有兩套比較有影響的API可 供使用,一個是POI,一個是jExcelAPI。其中功能相對POI比較弱一點。但jExcelAPI對中文支持很是好,API是純Java的, 並不 依賴Windows系統,即便運行在Linux下,它一樣可以正確的處理Excel文件。 另外須要說明的是,這套API對圖形和圖表的支持頗有限,並且 僅僅識別PNG格式。

使用以下: java

搭建環境 工具

 將下載後的文件解包,獲得jxl.jar,放入classpath,安裝就完成了。 測試

 基本操做 字體

 1、建立文件 spa

 擬生成一個名爲「test.xls」的Excel文件,其中第一個工做表被命名爲
 「第一頁」,大體效果以下: .net

package  test; excel


  //   生成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文件。 orm

 3、讀取文件 對象

 以剛纔咱們建立的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

 4、修改文件
 利用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);
        }
 

    }
 

}
 


其餘操做

 1、 數據格式化

 在Excel中不涉及複雜的數據類型,可以比較好的處理字串、數字和日期已經可以知足通常的應用。

 一、 字串格式化

 字符串的格式化涉及到的是字體、粗細、字號等元素,這些功能主要由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有很是豐富的
 構造子,供不一樣狀況下使用,jExcelAPI的java-doc中有詳細列表,這裏再也不列出。

 ②處代碼使用了WritableCellFormat類,這個類很是重要,經過它能夠指定單元格的各類
 屬性,後面的單元格格式化中會有更多描述。

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

 在WritableCellFormat類中,還有一個很重要的方法是指定數據的對齊方式,好比針對咱們
 上面的實例,能夠指定:

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

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

2、單元格操做

 Excel中很重要的一部分是對單元格的操做,好比行高、列寬、單元格合併等,所幸jExcelAPI
 提供了這些支持。這些操做相對比較簡單,下面只介紹一下相關的API。

 一、 合併單元格

   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  );

 合併既能夠是橫向的,也能夠是縱向的。合併後的單元格不能再次進行合併,不然會觸發異常。

 二、 行高和列寬

   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();
相關文章
相關標籤/搜索