【问题标题】:How to handle HYPERLINK function using POI SS?如何使用 POI SS 处理 HYPERLINK 功能?
【发布时间】:2011-08-05 04:23:04
【问题描述】:

我正在尝试使用 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:...","...")

如何让它正常工作?

【问题讨论】:

    标签: java excel spreadsheet apache-poi


    【解决方案1】:

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

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

    之类的东西中获得的超链接

    对于公式案例,只需取回公式字符串,如果是超链接公式,则从中获取感兴趣的部分。

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-22
    相关资源
    最近更新 更多