封装方法的含义:
类里面有封装属性,有构造方法,普通方法,将属性和方法捆绑在一起
我们从普通方法开始,Java基于poi源码操作excel,进行封装
观看代码,其中单元格类型比较独立,可以独立封装
封装建立方法(public) +返回值类型(void)+方法名(任意编辑得到单元格的值)+入参(想要谁就把谁传进来)
public void getCellValue(CellType cellType){//谁想要单元格的值,就把单元格的值传过来
}
后续更改为
public void getCellValue(XSSFCell cell){//谁想要单元格的值,就把单元格的值传过来
CellType cellType = cell.getCellType()
switch (cellType){
case _NONE:
//to do
break;
case NUMERIC:
double d = cell.getNumericCellValue();
System.out.println("得到数值型单元格的值=" +d);
break;
case STRING:
String str = cell.getStringCellValue();
System.out.println("得到字符串类型的值=" + str);
break;
case ERROR:
String error = cell.getErrorCellString();
System.out.println("得到错误单元格类型的值=" + error);
break;
case FORMULA:
String formula = cell.getCellFormula();
System.out.println("得到函数类型的值="+formula);
break;
case BOOLEAN:
boolean b = cell.getBooleanCellValue();
System.out.println("得到布尔型单元格的值="+b);
break;
case BLANK:
System.out.println("得到单元格结果为空");
break;
default:
Date date = cell.getDateCellValue();
System.out.println("得到日期类型的值=" +date);
}
}
}
封装剩余部分(包含wb,casesheet,row)
public void handlerExcel(){
//类的实例化,得到类的对象,wb对象代表文件app_testcase1.xlsx
XSSFWorkbook wb = new XSSFWorkbook("/Users/bytedance/Downloads/app_testcase1.xlsx");
//caseSheet 是代表整个case sheet,对象不能打印
XSSFSheet caseSheet = wb.getSheetAt(0);
//得到当前sheet最后一行下标
int lastRowNum = caseSheet.getLastRowNum();
//据下标逐行遍历
for (int i = 0; i <= lastRowNum; i++) {
XSSFRow row = caseSheet.getRow(i);
//得到某行的第一个/最后单元格下标,基准线从0开始
short firstCellNum = row.getFirstCellNum();
short lastCellNum = row.getLastCellNum();
//基于行遍历每个单元格
for (int j = firstCellNum; j < lastCellNum; j++) {
XSSFCell cell = row.getCell(j);
getCellValue(cell);//是前面的名称
}
运行时还需要在main方法下
public static void main(String[] args) throws IOException {
ExcelRead excelRead = new ExcelRead();
excelRead.handlerExcel();
}
先执行handlerExcel,得到类的对象,得到整个sheet,根据下标逐行遍历,在根据行遍历每个单元格
执行
优化
写死的不灵活,需要封装属性
最终优化后
main方法: