jxl 讀寫Excel例項
阿新 • • 發佈:2019-02-17
本篇文章主要講的是jxl 操作Excel的三個簡單的例項,一個是讀取Excel表格資料,一個是 寫一個新的Excel表格,最後是更新現有的Excel表格。在開始全面學習 jxl 之前,我們先看幾個例子,讓大家大概整體的瞭解一下jxl 是怎麼操作Excel表的,以使之後更有興趣,更好地學習jxl。
讀Excel表格資料:
import java.io.File; import java.io.IOException; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; /** * * @author yrs */ public class TRead { public static void read (Workbook book) { int rows; //得到Excel中工作表數 int sheetNumber = book.getNumberOfSheets(); //得到每個表的名稱 String [] sheetNameList = book.getSheetNames(); //得到每個工作表 Sheet [] sheetList = book.getSheets(); //遍歷每個單元格,得到單元格的內容,並輸出。注意得到單元格的內容是以字串形式返回的。 for(int i = 0;i < sheetNumber;i++) { System.out.println("############## " + sheetNameList[i] + " ##############"); //得到該工作表中資料的行數 rows = sheetList[i].getRows(); for(int j = 0;j < rows;j++) { //得到每一行的單元格 Cell [] cellList = sheetList[i].getRow(j); for (Cell cell : cellList) { System.out.print(cell.getContents() + " "); } System.out.println(); } } } public static void main(String [] args) throws IOException, BiffException { try { //檔案D://JEtest//read.xls 要存在,並且含有資料。 File file = new File("D://JEtest//read.xls"); //得到工作簿 Workbook book = Workbook.getWorkbook(file); TRead.read(book); book.close(); }catch (IOException | BiffException e) { System.out.println("Exception: " + e); throw e; } } }
讀Excel表格的步奏是:工作簿--》工作表--》單元格。 當然有時候對資料經行處理要知道資料的格式,這個要在取得單元格的時候對它進行資料型別的判斷,然後再轉化成相應的型別,從而得到原資料型別的值。關於資料型別會在之後的文章中介紹。
生成一個新的Excel表格,並向裡面寫資料:
import java.io.File; import java.io.IOException; import jxl.Workbook; import jxl.read.biff.BiffException; import jxl.write.Label; import jxl.write.Number; import jxl.write.Boolean; import jxl.write.DateFormat; import jxl.write.DateTime; import jxl.write.NumberFormat; import jxl.write.WritableCellFormat; import jxl.write.WritableFont; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException; /** * * @author yrs */ public class TWrite { public static void write(WritableWorkbook wb) throws WriteException { WritableSheet wSheet = wb.createSheet("sheet1", 0); //新增Label物件 Label labelC = new Label(0, 0, "Label cell"); wSheet.addCell(labelC); //新增Number物件 Number numberC = new Number(0, 1, 3.1415926); wSheet.addCell(numberC); // 3.新增Boolean物件 Boolean booleanC = new Boolean(0, 2, true); wSheet.addCell(booleanC); // 4.新增DateTime物件 DateTime dateTimeC = new DateTime(0, 3, new java.util.Date()); wSheet.addCell(dateTimeC); // 新增帶有字型Formatting的物件 WritableFont wFont = new WritableFont( WritableFont.TIMES, 18, WritableFont.BOLD, true); WritableCellFormat wCellFormatC = new WritableCellFormat(wFont); Label labelCF = new Label(1, 0, "Label Cell", wCellFormatC); wSheet.addCell(labelCF); // 新增帶有formatting的Number物件 NumberFormat nFormat = new NumberFormat("#.##"); WritableCellFormat wCellFormatN = new WritableCellFormat(nFormat); Number numberNF = new Number(1, 1, 3.1415926, wCellFormatN); wSheet.addCell(numberNF); // 新增帶有formatting的DateFormat物件 DateFormat dFormat = new DateFormat( "yyyy MM dd hh:mm:ss"); WritableCellFormat wCellFormatD = new WritableCellFormat(dFormat); DateTime dateTimeDF = new DateTime(1, 3, new java.util.Date(), wCellFormatD); wSheet.addCell(dateTimeDF); } public static void main(String [] args) throws IOException, BiffException, WriteException { try { //檔案D://JEtest//read.xls 不存在,若存在資料將會丟失 File file = new File("D://JEtest//write.xls"); //建立一個新的可寫工作簿 WritableWorkbook wb = Workbook.createWorkbook(file); TWrite.write(wb); // 寫入Exel工作表 wb.write(); // 關閉Excel工作薄物件 wb.close(); }catch (IOException | WriteException e) { System.out.println("Exception: " + e); throw e; } } }
生成一個新的Excel表格,並向裡面寫入資料的順序也是 工作簿 -- 工作表 -- 單元格。但是寫入資料的順序是反過來的,先向單元格中新增資料,然後新增到工作表上,最後寫入工作簿中。這裡需要注意的是,以 WritableWorkbook wb = Workbook.createWorkbook(file); 方式建立工作簿是建立了一個新的工作簿,如果file檔案原來存在,那麼它的資料將會失去,下一個例子將會講解怎樣更新一個Excel表格。 還有就是在工作簿關閉之前要把資料寫入工作簿中,也就是 wb.write();。
更新Excel表格資料:
import java.io.File; import java.io.IOException; import jxl.Workbook; import jxl.read.biff.BiffException; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException; /** * * @author yrs */ public class TUpdate { public static void update (WritableWorkbook wb) throws WriteException { WritableSheet sheet = wb.createSheet("第二頁", 1); sheet.addCell(new Label(0,0,"第二頁更新資料")); } public static void main(String [] args) throws IOException, BiffException, WriteException { try { //檔案D://JEtest//read.xls 要存在,並且含有資料。 File file = new File("D://JEtest//update.xls"); //得到工作簿 Workbook book = Workbook.getWorkbook(file); //建立一個可寫工作簿 WritableWorkbook wb = Workbook.createWorkbook(file, book); TUpdate.update(wb); wb.write(); wb.close(); book.close(); }catch (IOException | BiffException | WriteException e) { System.out.println("Exception: " + e); throw e; } } }
這裡需要注意的是,建立可寫工作簿的方式,你也可以把 file 檔案換成其他的,這樣會實現複製的效果。可以自己實現一下。
好了,有了這些例子大家是不是更有興趣學習jxl了,那就讓我們一起來學吧。