2011-05-26 34 views
2

我試圖用POI SS到Excel電子表格轉換爲CSV。不幸的是,我似乎無法正確處理HYPERLINK功能:如何使用POI SS處理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(); 
    } 
} 

不幸的是,儘管它解釋這種細胞作爲公式的單元格,cell.getHyperlink()返回null所以cell.toString()僅返回全公式,如:

= HYPERLINK( 「HTTP:...」, 「...」)

我如何使其正常工作?

回答

2

公式= HYPERLINK(「http:// something /」,「label」)與Excel中的常規超鏈接不同。

如果調用get.getHyperlink(),那麼它會爲小區返回的超級鏈接(如果設置)。這是你喜歡的東西拿到插入超鏈接 - >超鏈接

對於公式的情況下,剛拿到公式字符串回來,如果它是一個超鏈接公式搶從中感興趣的位。

(即使它們可能看起來在Excel中頗爲相似,在文件格式他們是非常非常不同的,這是你看到的),如果你想

+0

實際評估超鏈接的值()方法見http://stackoverflow.com/questions/15757243/how-to-read-result-of-hyperlink-function-in-poi/ – centic 2013-04-02 07:00:57