jxl(Java Excel API) 使用方法 【1】
// 構建Workbook物件, 只讀Workbook物件
// 直接從本地文件建立Workbook
// 從輸入流建立Workbook
Workbook workbook = null;
try {
workbook = Workbook.getWorkbook(new File("D://output.xls"));
} catch (Exception e) {
e.printStackTrace();
}
//返回正在使用的API的版本號,似乎是沒什麼太大的作用。
String apiVersion = workbook.getVersion();
System.out.println(apiVersion);
// 獲得工作薄(Workbook)中工作表(Sheet)的個數
int sheets = workbook.getNumberOfSheets();
System.out.println(sheets);
//返回工作薄(Workbook)中工作表(Sheet)物件陣列
Sheet[] sheetStringArr = workbook.getSheets();
for(int i=0;i<sheetStringArr.length;i++){
System.out.println(sheetStringArr[i].getName()); //返回Sheet標題
System.out.println(sheetStringArr[i].getColumns());//Sheet頁的總列數
System.out.println(sheetStringArr[i].getColumn(0));//Sheet頁的某一列的陣列
System.out.println(sheetStringArr[i].getRows());//Sheet頁的總行數
System.out.println(sheetStringArr[i].getRow(0));//Sheet頁的某一行的陣列
}
//獲取第一張Sheet表 (術語:工作表) ,兩種方法
Sheet sheet = workbook.getSheet(0); //用下標獲得第一頁
Sheet sheet = workbook.getSheet("TestCreateExcel"); //用名稱獲得第一頁
// 返回第一行,第一列的值 (0 (第一個代表列) ,0 (第二個代表行))
Cell cell00=sheet.getCell(0, 0);
System.out.println(cell00.getType()); //獲得代表類的型別 (返回類的型別)
System.out.println(cell00.getContents());//獲得代表類的型別 (返回string)
//判斷返回值型別
if(CellType.DATE==cell00.getType()){
System.out.print("是日期類"+cell00.getType());//Date()
}
if(CellType.LABEL==cell00.getType()){
System.out.print("是標籤類"+cell00.getType());//Lable()
}
if(CellType.NUMBER==cell00.getType()){
System.out.print("是日期類"+cell00.getType());//Number()
}
//關閉物件
workbook.close();
===============================================================
和讀取Excel工作表相似,首先要使用Workbook類的工廠方法建立一個可寫入的工作薄(Workbook)物件,這裡要注意的是,只能通過API提供的工廠方法來建立Workbook,而不能使用WritableWorkbook的建構函式,因為類WritableWorkbook的建構函式為protected型別。
// 構建Workbook物件, 只讀Workbook物件
// Method 1:建立可寫入的Excel工作薄
File tempFile=new File("d:/output.xls");
WritableWorkbook workbook = Workbook.createWorkbook(tempFile);
// 建立Excel工作表 (名稱,位置) ,該方法需要兩個引數,一個是工作表的名稱,另一個是工作表在工作薄中的位
//置
WritableSheet sheet = workbook.createSheet("TestCreateExcel", 0);
//1.新增帶有字型Formatting的物件
WritableFont headerFont = new WritableFont(WritableFont.ARIAL, 12, WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.BLUE); //字型
//2.Format
WritableCellFormat headerFormat = new WritableCellFormat (headerFont); //Format 一下
//3.加入標籤 (列,行,"內容",字型)
jxl.write.Label labelCF = new jxl.write.Label(1, 0, "This is a Label Cell", headerFormat );
//4.加入工作表
sheet.addCell(labelCF );
//設定列的寬度 (那列,寬度數字)
sheet.setColumnView(1,20);
//寫入Exel工作表
wwb.write();
//關閉Excel工作薄物件
wwb.close();
=================================================================================
3、拷貝、更新Excel工作薄
接下來簡要介紹一下如何更新一個已存在的工作薄,主要是下面二步操作,第一步是構造只讀的Excel工作薄,第二步是利用已建立的Excel工作薄建立新的可寫入的Excel工作薄,參考下面的程式碼片段:(完整程式碼見ExcelModifying.java)
//建立只讀的Excel工作薄的物件
jxl.Workbook rw = jxl.Workbook.getWorkbook(new File(sourcefile));
//建立可寫入的Excel工作薄物件
jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File(targetfile), rw);
//讀取第一張工作表
jxl.write.WritableSheet ws = wwb.getSheet(0); //獲得第一頁
//獲得第一個單元格物件
jxl.write.WritableCell wc = ws.getWritableCell(0, 0); //獲得第一列,第一行
//判斷單元格的型別, 做出相應的轉化
if(wc.getType() == CellType.LABEL)
{
Label l = (Label)wc; //(強轉)得到單元格的Label()物件
l.setString("The value has been modified."); //重新設定值
}
//寫入Excel物件
wwb.write();
//關閉可寫入的Excel物件
wwb.close();
//關閉只讀的Excel物件
rw.close();