首先,为什么使用poi?jxl只能处理03版之前的excel,也就是xls结尾的,不能处理xlsx。poi兼容两种格式,poi解析两种格式的文件时,唯一的不同就是xls时,为HSSF;xlsx时,为XSSF。
首先是处理Cell对象的小方法:
//这个方法对cell进行处理,传入cell对象,返回cell中内容,String类型。
public static String getCellFormatValue(Cell cell) {
String cellValue = "";
if (cell != null) {
// 判断cell类型
switch (cell.getCellType()) {
case Cell.CELL_TYPE_NUMERIC: {
cellValue = String.valueOf(cell.getNumericCellValue());
break;
}
case Cell.CELL_TYPE_STRING: {
cellValue = cell.getRichStringCellValue().getString();
break;
}
default:
cellValue = "";
}
}
return cellValue;
}
两种处理excel的代码:
xls时:
InputStream inputStream = new FileInputStream("绝对路径.xls");
HSSFWorkbook workbook = new HSSFWorkbook(inputStream);
HSSFSheet s = workbook.getSheetAt(0);
for (int j = 0; j < s.getPhysicalNumberOfRows(); j++) {//获取总行数
Row row = s.getRow(j); // 取出第i行 getRow(index) 获取第(j)行
for (int k = 0; k < row.getPhysicalNumberOfCells(); k++) { // getPhysicalNumberOfCells() 获取当前行的总列数
String value1 = getCellFormatValue(row.getCell(k));//取出第j行第k列的值
System.out.println(value1);
}
}
workbook.close();
xlsx时:
InputStream inputStream = new FileInputStream("绝对路径.xlsx");
XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
XSSFSheet s = workbook.getSheetAt(0);
for (int j = 0; j < s.getPhysicalNumberOfRows(); j++) {//获取总行数
Row row = s.getRow(j); // 取出第i行 getRow(index) 获取第(j)行
for (int k = 0; k < row.getPhysicalNumberOfCells(); k++) { // getPhysicalNumberOfCells() 获取当前行的总列数
String value1 = getCellFormatValue(row.getCell(k));//取出第j行第k列的值
System.out.println(value1);
}
}
workbook.close();