如何使用POI SS处理HYPERLINK功能?

时间:2011-05-26 21:44:26

标签: java excel spreadsheet apache-poi

我正在尝试使用POI SS将Excel电子表格转换为CSV。不幸的是,我似乎无法正确处理HYPERLINK功能:

if (cell.getCellType() == Cell.CELL_TYPE_FORMULA) {
  System.out.println("formula cell: " + cell.toString());
  switch (cell.getCachedFormulaResultType()) {
    case Cell.CELL_TYPE_BOOLEAN:
      return Boolean.toString(cell.getBooleanCellValue());
    case Cell.CELL_TYPE_NUMERIC:
      return NUMERIC_FORMAT.format(cell.getNumericCellValue());
    case Cell.CELL_TYPE_BLANK:
      return "";
    default:
      // Special case handling for HYPERLINK cells
      if (cell.getHyperlink() != null) {
        System.out.println("found hyperlink: " + cell.getHyperlink().getAddress());
        return cell.getHyperlink().getAddress();
      }
      System.out.println("something else: " + cell.toString());
      return cell.toString();
  }
}

不幸的是,尽管它将此单元格解释为FORMULA单元格,但cell.getHyperlink()返回null,因此cell.toString()只返回完整的公式,如:

= HYPERLINK( “HTTP:...”, “...”)

如何让它正常工作?

1 个答案:

答案 0 :(得分:2)

= HYPERLINK(“http:// something /”,“label”)的公式与Excel中的普通超链接不同。

如果你调用get.getHyperlink(),那么它将返回单元格的超链接(如果已设置)。这是你从Insert - >这样的超链接。超级链接

对于公式情况,只需返回公式字符串,如果是超链接公式,请从中获取感兴趣的内容。

(尽管它们在Excel中可能看起来非常相似,但在文件格式中它们非常不同,这就是你所看到的)