上篇文章记录了简单的POI创建Excel文件,依赖导入可参考上篇
POI读取excel中公式
@Test
public void testRead() throws Exception {
//读取文件的位置
String path = "D:\\03版excel测试写入速度.xls";
//获取文件输入流
FileInputStream fileInputStream = new FileInputStream(path);
//通过文件流创建(获取)工作簿,excel中的操作,Java基本都能实现,这里的新建的对象注意与excel版本对应
Workbook workbook = new HSSFWorkbook(fileInputStream);
//获取工作表sheet,0表示获取第一个sheet
Sheet sheet = workbook.getSheetAt(0);
//获取第一行数据
Row row = sheet.getRow(0);
//获取第一行第一个数据
Cell cell = row.getCell(0);
System.out.println(cell.getNumericCellValue());
}
这里可能很多人会输出报错,如下
java.lang.IllegalStateException: Cannot get a xxx类型 value from a xxx类型 cell
这是因为excel单元格的内容格式有很多比如:字符串类型、数字类型、日期类型等。
我这里测试用的excel文件里的内容是数字型所以使用cell.getNumericCellValue()获取,如果是其他类型可cell.查看其他获取方法。
实际使用可以使用for循环读取excel中所有数据,配合switch-case(也可以使用if-else if)对单元格数据类型进行判断,使用对应的获取方法进行获取。使用循环时常用的两个方法 1.sheet.getPhysicalNumberOfRows();获取工作表的行数
2.row.getPhysicalNumberOfCells();获取每行的列数
获取单元格类型的方法
CellType cellType = cell.getCellType();
进行类型判断方法,其他类型如下图可替换NUMERIC
cellType.equals(CellType.NUMERIC)