JXL基本操作


一、jxl.jar概述

  • 通過java操作excel表格的工具類庫
  • 支持Excel 95-2000的所有版本
  • 生成Excel 2000標准格式
  • 支持字體、數字、日期操作
  • 能夠修飾單元格屬性
  • 支持圖像和圖表

  應該說以上功能已經能夠大致滿足我們的需要。最關鍵的是這套API是純Java的,並不依賴Windows系統,即使運行在Linux下,它同樣能夠正確的處理Excel文件。另外需要說明的是,這套API對圖形和圖表的支持很有限,而且僅僅識別PNG格式。

 

Java Excel API 文檔 

http://www.andykhan.com/jexcelapi/

 

二、搭建環境

  將下載后的文件解包,得到JXL.JAR,放入classpath。如果包不能正常的加載,可以把你下載好的JXL.JAR包放入本機jre的安裝目錄下,例如 D:\JAVA\jre\lib\ext中。如果想在Eclipse的一個項目中導入JXL.JAR,在該項目上右鍵,點擊“屬性”,類別那里選擇”庫“,點擊"添加外部jar”在彈出的文件選擇對話框選擇你的jxl.jar。

 

三、創新文件:

新建一個名"Test.xls"的Excel文件,其中第一個工作表被命名為“sheet_one”,代碼如下,編譯執行后,會在當前位置產生一個Excel文件。

 1 package com.test;
 2 
 3 import jxl.*;
 4 import java.io.*;
 5 
 6 import jxl.write.*;
 7 import jxl.write.biff.RowsExceededException;
 8 
 9 public class CreateExcel {
10 
11     public static void main(String[] args) throws RowsExceededException, WriteException{
12         WritableWorkbook book;
13         try {
14             System.out.println("---start---");
15             //打開文件 
16             book = Workbook.createWorkbook(new File("Test.xls"));
17             
18             //生成名為“第一頁”的工作表,參數0表示這是第一頁  
19             WritableSheet sheet = book.createSheet("sheet_one", 0);
20             
21             //在Label對象的構造中指名單元格位置是第一列第一行(0,0)    
22             //以及單元格內容為Hello World
23             Label label = new Label(0,0,"Hello World");
24             
25             //將定義好的單元格添加到工作表中    
26             sheet.addCell(label);
27             
28              /*生成一個保存數字的單元格    
29               必須使用Number的完整包路徑,否則有語法歧義    
30               單元格位置是第二列,第一行,值為789.123*/  
31             jxl.write.Number num = new jxl.write.Number(0,1,123.456);
32             sheet.addCell(num);
33             
34             //寫入數據並關閉文
35             book.write();
36             book.close();
37             System.out.println("---end---");
38             
39         } catch (IOException e) {
40             System.out.println(e);            
41         }
42 
43     }
44 
45 }

 

四、讀取文件:

 使用我們上面創建的Excel文件為例,做一個簡單的讀取操作,程序代碼如下:

 1 package com.test;
 2 
 3 import jxl.*;
 4 import jxl.read.biff.BiffException;
 5 
 6 import java.io.*;
 7 
 8 public class ReadExcel {
 9 
10     public static void main(String[] args) throws BiffException, IOException {
11         Workbook book = Workbook.getWorkbook(new File("Test.xls"));
12         
13         //獲得第一個工作表對象  
14         Sheet sheet = book.getSheet("sheet_one");
15         //Sheet sheet = book.getSheet(0);
16         
17         int rows = sheet.getRows();
18         int cols = sheet.getColumns();
19         
20         System.out.println("總列數:" + cols);
21         System.out.println("總行數:" + rows);
22         System.out.println("----------------------------");    
23         
24         int i=0;
25         int j=0;
26         //循環讀取數據
27         for(i=0;i<cols;i++)
28         {
29             for(j=0;j<rows;j++)
30             {
31                 System.out.println("第"+j+"行,第"+i+"列為:"+sheet.getCell(i, j).getContents());
32             }
33             
34         }
35 
36     }
37 
38 }

輸出結果:

總列數:1
總行數:2
----------------------------
第0行,第0列為:Hello World
第1行,第0列為:123.456

 

五、修改文件:

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

 1 package com.test;
 2 
 3 import jxl.*;
 4 import java.io.*;
 5 
 6 import jxl.read.biff.BiffException;
 7 import jxl.write.*;
 8 import jxl.write.biff.RowsExceededException;
 9 
10 
11 public class UpdateExcel {
12 
13     public static void main(String[] args) throws BiffException, IOException, RowsExceededException, WriteException{
14          //獲得文件    
15         Workbook wb = Workbook.getWorkbook(new File ("Test.xls"));
16         
17         //打開一個文件的副本,並且指定數據寫回到原文件
18         WritableWorkbook book = Workbook.createWorkbook(new File ("Test.xls"), wb);
19         
20          //添加一個工作表 
21         WritableSheet sheet = book.createSheet("sheet_two", 1);
22         
23         sheet.addCell(new Label(0,0,"Test data for sheet_two"));
24         
25         //輸出
26         System.out.println(sheet.getCell(0, 0).getContents());
27         
28         book.write();
29         book.close();
30         
31     }
32 
33 }

輸出:

Test data for sheet_two

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM