Как работать с функцией HYPERLINK с помощью POI SS? - PullRequest
2 голосов
/ 27 мая 2011

Я пытаюсь использовать 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 Ответ

2 голосов
/ 27 мая 2011

Формула = HYPERLINK ("http://something/","label") - это не то же самое, что обычная гиперссылка в Excel.

Если вы вызовете get.getHyperlink (), он вернет гиперссылку (если установлена) для ячейки. Это гиперссылка, которую вы получаете от чего-то типа Вставка -> Гиперссылка

В случае формулы просто верните строку формулы, и, если это формула гиперссылки, извлеките из нее немного интереса.

(Несмотря на то, что в Excel они могут выглядеть очень похоже, в формате файла они очень сильно отличаются, что вы и видите)

...