我正在尝试使用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:...”, “...”)
如何让它正常工作?
答案 0 :(得分:2)
= HYPERLINK(“http:// something /”,“label”)的公式与Excel中的普通超链接不同。
如果你调用get.getHyperlink(),那么它将返回单元格的超链接(如果已设置)。这是你从Insert - >这样的超链接。超级链接
对于公式情况,只需返回公式字符串,如果是超链接公式,请从中获取感兴趣的内容。
(尽管它们在Excel中可能看起来非常相似,但在文件格式中它们非常不同,这就是你所看到的)