作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我尝试分析带有其他文件链接的 excel 文件,我想知道文件名和路径。为此,我使用的是 apache poi 3.14。
我为 Ref3DPtg 对象弄明白了,但对于 Ref3DPxg 我不知道该怎么做。我只能访问单元格地址和工作表名称。
有人知道怎么做吗?
代码:
...
if(ptg instanceof Ref3DPxg){
cellAddress = ptg.format2DRefAsString();
sheetName = ptg.getSheetName();
workbookName = ???;
} else if(ptg instanceof Ref3DPtg) {
// by Ref3DPtg is no problem
}
最佳答案
由于 XLSX 文件格式存储外部引用的方式,实际上不是 =[Other.xlsx]Sheet1!A1
而实际上是 =[23]Sheet1!A1
,这是一个两步过程。一、get the external workbook number from the Pxg .接下来,来自Workbook get ExternalLinks table对于该工作簿编号,请注意差一。 (External Workbook 0 实际上是当前工作簿,所以External Workbook 1 对应External Link 0)。最后,获取 filename for that link
所以,你的代码应该是这样的:
if(ptg instanceof Ref3DPxg){
Ref3DPxg pxg = (Ref3DPxg)ptg;
int extWB = pxg.getExternalWorkbookNumber();
int extLink = extWB-1;
ExternalLinksTable links = wb.getExternalLinksTable().get(extLink);
String filename = links.getLinkedFileName();
}
关于java - Apache Poi,如何获取链接的工作簿?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36990272/
我是一名优秀的程序员,十分优秀!