《手把手教你》系列技巧篇(六十八)-java+ selenium自動化測試 – 讀寫excel文件 – 下篇(詳細教程)
- 2022 年 2 月 21 日
- 筆記
- java+selenium自動化測試
1.簡介
今天繼續操作Excle,小夥伴或者童鞋們是不是覺得宏哥會介紹第三種工具操作Excle,今天不介紹了,有兩種就夠用了,其實一種就夠用了,今天主要是來介紹如何使用不同的數據類型讀取Excel文件。在實際測試中,您可能不得不處理除String之外的多個數據類型的Excel文件數據。 在本教程中,我們將使用不同的數據類型讀取Java中的excel文件。
2.準備不同數據類型的Excle
1.我們將嘗試讀取下面的excel,因為可以看出,excel在前四個單元中有Date,Number,Boolean和Label(常規字符串)數據。
2.把這個文件放到eclipse項目中,如下圖所示:
3.JXL使用不同的數據類型讀取Excel文件
3.1代碼設計
1.新建一個OperateExcle.java的文件,輸入如下代碼。
3.2參考代碼
package lessons; import java.io.File; import java.io.IOException; import jxl.BooleanCell; import jxl.Cell; import jxl.CellType; import jxl.DateCell; import jxl.LabelCell; import jxl.NumberCell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; /** * @author 北京-宏哥 * * @公眾號:北京宏哥 * * 《手把手教你》系列技巧篇(六十八)-java+ selenium自動化測試 - 讀寫excel文件 -下篇(詳細教程) * * 2022年2月15日 */ public class OperateExcle { public static void main(String[] args) { //從指定位置的文件創建工作簿對象;根據計算機上的位置更改文件的路徑。 Workbook wrk1; try { wrk1 = Workbook.getWorkbook(new File(".\\Files\\test-data1.xls")); //獲取工作簿中第一個工作表的引用 Sheet sheet1 = wrk1.getSheet(0); //使用工作表的getCel(int col, int row)方法獲取對單元的引用 Cell cell1 = sheet1.getCell(0, 0); Cell cell2 = sheet1.getCell(1, 0); Cell cell3 = sheet1.getCell(2, 0); Cell cell4 = sheet1.getCell(3, 0); DateCell dCell = null; NumberCell nCell = null; BooleanCell bCell = null; LabelCell lCell = null; // 檢查單元格內容的類型,並將該對象轉換為適當的引用類型 if (cell1.getType() == CellType.DATE) dCell = (DateCell) cell1; if (cell2.getType() == CellType.NUMBER) nCell = (NumberCell) cell2; if (cell3.getType() == CellType.BOOLEAN) bCell = (BooleanCell) cell3; if (cell4.getType() == CellType.LABEL) lCell = (LabelCell) cell4; // 顯示單元格內容 System.out.println("Value of Date Cell is: " + dCell.getDate()); System.out.println("Value of Number Cell is: " + nCell.getValue()); System.out.println("Value of Boolean Cell is: " + bCell.getValue()); System.out.println("Value of Label Cell is: " + lCell.getString()); } catch (BiffException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
3.3運行代碼
1.運行代碼,右鍵Run AS->Java Appliance,控制台輸出,如下圖所示:
4.POI使用不同的數據類型讀取Excel文件
4.1代碼設計
1.新建一個ReadDiffExcel.java的文件,輸入如下代碼。
4.2參考代碼
package lessons; import java.io.File; import java.io.FileInputStream; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; /** * @author 北京-宏哥 * * @公眾號:北京宏哥 * * 《手把手教你》系列技巧篇(六十八)-java+ selenium自動化測試 - 讀寫excel文件 -下篇(詳細教程) * * 2022年2月15日 */ public class ReadDiffExcle { public static void main(String[] args) { File f = new File(".\\Files\\test-data1.xls"); try { FileInputStream is = new FileInputStream(f); @SuppressWarnings("resource") HSSFWorkbook wbs = new HSSFWorkbook(is); HSSFSheet childSheet = wbs.getSheetAt(0); // System.out.println(childSheet.getPhysicalNumberOfRows()); System.out.println("有行數" + childSheet.getLastRowNum()); for (int j = 0; j < childSheet.getLastRowNum(); j++) { HSSFRow row = childSheet.getRow(j); // System.out.println(row.getPhysicalNumberOfCells()); // System.out.println("有列數" + row.getLastCellNum()); if (null != row) { for (int k = 0; k < row.getLastCellNum(); k++) { HSSFCell cell = row.getCell(k); if (null != cell) { switch (cell.getCellType()) { case NUMERIC: // 數字 System.out.print(cell.getNumericCellValue() + " "); break; case STRING: // 字符串 System.out.print(cell.getStringCellValue() + " "); break; case BOOLEAN: // Boolean System.out.print(cell.getBooleanCellValue() + " "); break; case FORMULA: // 公式 System.out.print(cell.getCellFormula() + " "); break; case BLANK: // 空值 System.out.print(" "); break; case ERROR: // 故障 System.out.print(" "); break; default: System.out.print("未知類型 "); break; } } else { System.out.print("- "); } } } System.out.println(); } } catch (Exception e) { e.printStackTrace(); } } }
4.3運行代碼
1.運行代碼,右鍵Run AS->Java Appliance,控制台輸出,如下圖所示:
5.小結
宏哥在代碼運行的時候由於POIjar包的升級,有些變量可能會和舊的版本有區別,運行過程報錯:java.lang.ClassNotFoundException: org.apache.commons.math3.util.ArithmeticUtils。可能是由於引入小數,需要數學的jar包,將其引入項目中成功解決報錯。