无法使用Apache POI使用JAVA在Excel中打开超链接文件

时间:2014-06-22 11:26:28

标签: java excel apache apache-poi

我尝试使用Apache POI打开Excel工作表中链接的所有文件。这就是我所拥有的:

FileInputStream inputstream = new FileInputStream(file);
workbook = new HSSFWorkbook(inputstream);

HSSFSheet sheet = workbook.getSheetAt(0);
log("Processing Sheet: " + sheet.getSheetName());

Iterator rowIterator = sheet.iterator();

while (rowIterator.hasNext()) {
    HSSFRow row = (HSSFRow) rowIterator.next();
    Iterator cellIterator = row.cellIterator();

    while (cellIterator.hasNext()) {
        HSSFCell cell = (HSSFCell) cellIterator.next();

        if(cell.getHyperlink() != null){
            HSSFHyperlink hyperlink = cell.getHyperlink();
            log("Hyperlink found: " + hyperlink.getAddress());
            try{
                FileInputStream fs = new FileInputStream(hyperlink.getAddress());
            }catch(Exception ex){
                log(ex.getMessage());
            }

        }
    }
}

但是hyperlink.getAddress()没有返回正确的路径,看起来它返回相对路径但没有../

我也尝试在工作簿上使用getDirectoryRoot()方法。但这只会返回/。我有Excel文件的路径,但没有excel使用的基本路径或附件路径中的../,我无法获得正确的路径。

1 个答案:

答案 0 :(得分:0)

相反,您可以使用一种更简单的方法:获取具有该相对地址的文件,然后获取该文件的绝对路径。

e.g。

System.out.println(new File(hyperlink.getAddress()).getAbsolutePath());