導入Excel

public static void main(String args[]) throws BiffException, IOException, WriteException{
 //1 從Excel文件讀取數據表

 //Java Excel API既可以從本地文件系統的一個文件(.xls),也可以從輸入流中讀取Excel數據表。
 //讀取Excel數據表的第一步是創建Workbook(術語:工作薄),下面的代碼片段舉例說明了應該如何操作:
 //(完整代碼見ExcelReading.java)
 
 try
 {
 //構建Workbook對象, 只讀Workbook對象
 //直接從本地文件創建Workbook
 //從輸入流創建Workbook
     InputStream is = new FileInputStream("D:/user.xls");
     jxl.Workbook rwb = Workbook.getWorkbook(is);
 

 //一旦創建了Workbook,我們就可以通過它來訪問Excel Sheet(術語:工作表)。參考下面的代碼片段:


 //獲取第一張Sheet表
 Sheet rs = (Sheet) rwb.getSheet(0);
 //我們既可能通過Sheet的名稱來訪問它,也可以通過下標來訪問它。如果通過下標來訪問的話,
 //要注意的一點是下標從0開始,就像數組一樣。

 //一旦得到了Sheet,我們就可以通過它來訪問Excel Cell(術語:單元格)。參考下面的代碼片段:


 //獲取第一行,第一列的值
 Cell c00 = ((jxl.Sheet) rs).getCell(0, 0);
 String strc00 = c00.getContents();

 //獲取第一行,第二列的值
 Cell c10 = ((jxl.Sheet) rs).getCell(1, 0);
 String strc10 = c10.getContents();

 //獲取第二行,第二列的值
 Cell c11 = ((jxl.Sheet) rs).getCell(1, 1);
 String strc11 = c11.getContents();

 System.out.println("Cell(0, 0)" + " value : " + strc00 + "; type : " + c00.getType());
 System.out.println("Cell(1, 0)" + " value : " + strc10 + "; type : " + c10.getType());
 System.out.println("Cell(1, 1)" + " value : " + strc11 + "; type : " + c11.getType());


 
 //如果僅僅是取得Cell的值,我們可以方便地通過getContents()方法,
 //它可以將任何類型的Cell值都作爲一個字符串返回。示例代碼中Cell(0, 0)是文本型,
 //Cell(1, 0)是數字型,Cell(1,1)是日期型,通過getContents(),三種類型的返回值都是字符型。

 //如果有需要知道Cell內容的確切類型,API也提供了一系列的方法。參考下面的代碼片段:


 String strcc00 = null;
 double strcc10 = 0.00;
 Date strcc11 = null;

 Cell cc00 = ((jxl.Sheet) rs).getCell(0, 0);
 Cell cc10 = ((jxl.Sheet) rs).getCell(1, 0);
 Cell cc11 = ((jxl.Sheet) rs).getCell(1, 1);

 if(c00.getType() == CellType.LABEL)
 {
  LabelCell labelc00 = (LabelCell)cc00;
  strcc00 = labelc00.getString();
 }
 if(c10.getType() == CellType.NUMBER)
 {
  NumberCell numc10 = (NumberCell)cc10;
  strcc10 = numc10.getValue();
 }
 if(c11.getType() == CellType.DATE)
 {
  DateCell datec11 = (DateCell)cc11;
  strcc11 = datec11.getDate();
 }

 System.out.println("Cell(0, 0)" + " value : " + strcc00 + "; type : " + cc00.getType());
 System.out.println("Cell(1, 0)" + " value : " + strcc10 + "; type : " + cc10.getType());
 System.out.println("Cell(1, 1)" + " value : " + strcc11 + "; type : " + cc11.getType());




 //在得到Cell對象後,通過getType()方法可以獲得該單元格的類型,然後與API提供的基本類型相匹配,
 //強制轉換成相應的類型,最後調用相應的取值方法getXXX(),就可以得到確定類型的值。
 //API提供了以下基本類型,與Excel的數據格式相對應,如下圖所示:





 //每種類型的具體意義,請參見Java Excel API Document。

 //當你完成對Excel電子表格數據的處理後,一定要使用close()方法來關閉先前創建的對象,
 //以釋放讀取數據表的過程中所佔用的內存空間,在讀取大量數據時顯得尤爲重要。參考如下代碼片段:


 //操作完成時,關閉對象,釋放佔用的內存空間
 rwb.close();


 }
 catch (Exception e)
 {
  e.printStackTrace();
 }


 //Java Excel API提供了許多訪問Excel數據表的方法,在這裏我只簡要地介紹幾個常用的方法,
 //其它的方法請參考附錄中的Java Excel API Document。

 //Workbook類提供的方法

 //1. int getNumberOfSheets();
 //獲得工作薄(Workbook)中工作表(Sheet)的個數,示例:


 jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File("D:/user.xls"));
 int sheets = rwb.getNumberOfSheets();




 //2. Sheet[] getSheets();
 //返回工作薄(Workbook)中工作表(Sheet)對象數組,示例:


 jxl.Workbook rwb2 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));
 Sheet[] sheets2 = (Sheet[]) rwb2.getSheets();




 //3. String getVersion();
 //返回正在使用的API的版本號,好像是沒什麼太大的作用。


 jxl.Workbook rwb3 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));
 String apiVersion = rwb3.getVersion();




 //Sheet接口提供的方法

 //1) String getName();
 //獲取Sheet的名稱,示例:


 jxl.Workbook rwb4 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));
 jxl.Sheet rs = rwb4.getSheet(0);
 String sheetName = rs.getName();




 //2) int getColumns()
 //獲取Sheet表中所包含的總列數,示例:


 jxl.Workbook rwb5 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));
 jxl.Sheet rs2 = rwb5.getSheet(0);
 int rsColumns = rs2.getColumns();




 //3) Cell[] getColumn(int column)
 //獲取某一列的所有單元格,返回的是單元格對象數組,示例:


 jxl.Workbook rwb6 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));
 jxl.Sheet rs3 = rwb6.getSheet(0);
 Cell[] cell = rs3.getColumn(0);




 //4) int getRows()
 //獲取Sheet表中所包含的總行數,示例:


 jxl.Workbook rwb7 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));
 jxl.Sheet rs4 = rwb7.getSheet(0);
 int rsRows = rs4.getRows();




 //5) Cell[] getRow(int row)
 //獲取某一行的所有單元格,返回的是單元格對象數組,示例子:


 jxl.Workbook rwb8 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));
 jxl.Sheet rs5 = rwb8.getSheet(0);
 Cell[] cell5 = rs5.getRow(0);




 //6) Cell getCell(int column, int row)
 //獲取指定單元格的對象引用,需要注意的是它的兩個參數,第一個是列數,第二個是行數,
 //這與通常的行、列組合有些不同。


 jxl.Workbook rwb9 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));
 jxl.Sheet rs6 = rwb9.getSheet(0);
 Cell cell6 = rs6.getCell(0, 0);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章