下面這些是在開發中用到的一些東西,有的代碼貼的不是完整的,只是貼出了關於操作EXCEL的代碼: 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有非常豐富的
- 構造子,供不同情況下使用,jExcelAPI的java-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();
|