我有一个Cell对象,如何获得该细胞的名称?

想要一个功能,例如:

String name = myCell.getName();

在Excel中,我已在名称框中将其命名,所以我不想获得“B4”,我想获得诸如“InterestRate”之类的名称。

找不到这样的方法,我可以通过其他方式实现吗?

最佳答案

要找到定义为完全匹配一个单元格的命名范围,您需要类似以下内容:

// Get the cell we want to find - A1 for this case
Workbook wb = WorkbookFactory.create("input.xlsx");
int sheetIndex = 0;
Sheet s = wb.getSheetAt(sheetIndex);
Cell wanted = s.getRow(0).getCell(0);
String wantedRef = (new CellReference(wanted)).formatAsString();

// Check all the named range
for (int nn=0; nn<wb.getNumberOfNames(); nn++) {
   Name n = wb.getNameAt(nn);
   if (n.getSheetIndex() == -1 || n.getSheetIndex() == sheetIndex) {
      if (n.getRefersToFormula().equals(wantedRef)) {
         // Found it!
         return name.getNameName();
      }
   }
}

请注意,这将返回适用于单元格的第一个命名范围,如果有多个,并且您希望全部使用,则需要调整该代码以继续进行并返回列表

09-26 20:18