我尝试使用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使用的基本路径或附件路径中的../
,我无法获得正确的路径。
答案 0 :(得分:0)
相反,您可以使用一种更简单的方法:获取具有该相对地址的文件,然后获取该文件的绝对路径。
e.g。
System.out.println(new File(hyperlink.getAddress()).getAbsolutePath());