如何使用apache POI库按列名获取Excel工作表单元格数据

我想获得一个特定工作表的单元格数据与列名而不是列索引,目前我可以使用单元格数据

fis = new FileInputStream(ExcelPath); wb = new XSSFWorkbook(fis); sh = wb.getSheet(SheetName); cell = sh.getRow(rownum).getCell(colnum); 

但是我正在寻找一种方法来获取细胞数据,

 cell = sh.getRow(rownum).getCell(ColName); //not working 

Excel列没有名称。 他们只有字母,例如A,D,BB

要了解如何将Excel样式的列字母映射到POI样式的基于0的索引,您需要使用convertColStringToIndex(java.lang.String ref)方法 ,它可以帮助您

如果你的意思是你想要根据第一行中的值来查找一个列,你应该这样做:

 DataFormatter fmt = new DataFormatter(); Map<String,Integer> headings = new HashMap<String,Integer>(); Row headings = sheet.getRow(0); if (headings == null) throw new IllegalArgumentException("Empty headings row"); for (Cell c : headings) { headings.put(fmt.formatCellValue(c), c.getColumnIndex()); } 

如果你有更复杂的用例,例如一个运行多行的标题,你需要编写更复杂的代码……这一切都是由你的用例驱动的