从.xls文件中获取“工作簿的绝对path”
当我在一个特定的.xls文件上使用Excel“Document Inspector”来检查“隐藏的属性或个人信息”时,它说:
以下文件信息被发现:
*工作簿的绝对path
如何从文件中获取工作簿的绝对path? 如果需要以编程方式完成,我可以使用Java(如Apache POI)或VBA。
我知道文件当前保存的位置,但是我想提取的是保存在文件中的工作簿的绝对path。 这是我可以知道作者保存的地方。
这是文件发生了什么事情:
- 有人创作它,把它保存在我不知道的绝对文件path中
- 他们上传到一个网站
- 我从网站上下载了它
Excel表示文档包含步骤1的绝对path。我在这条path之后,而不是我在步骤3保存它的地方,因为我知道这一点。
我可以通过简单地创build一个空的Excel文件复制该警告消息,添加一个公式,将其保存为BIFF8(.xls)。 然后文件督察会警告有关绝对path。 …但在我的情况下,文件内没有文件名。
validation这一点的一个简单方法是在hex编辑器中打开文件,并search一个众所周知的保存位置(即存储虚拟/testing文件的位置) – 这可以存储为ASCII或16位字符,位string,即每个奇数字节是一个字符。
如果您想使用POI开发人员工具,则可以使用以下方法:
列出所有的Excellogging:
java -cp poi-3.16-beta1.jar org.apache.poi.hssf.dev.BiffViewer file.xls
列出文档和摘要属性:
java -cp poi-3.16-beta1.jar org.apache.poi.hpsf.extractor.HPSFPropertiesExtractor file.xls
列出常见嫌犯SummaryInformation
, DocumentSummaryInformation
和Workbook
旁边的任何embedded对象:
java -cp poi-3.16-beta1.jar org.apache.poi.poifs.dev.POIFSLister file.xls
因此,在运行工具并logging输出之后,可以通过Excel Document Inspector删除属性,然后再次执行这些工具。 输出可以是diffic,你可能会find罪魁祸首。
假设它是一个.xlsx
文件,而不是一个老式的.xls
文件,你可以
- 将工作簿重命名为
.zip
文件 - 查看
.zip
文件中的xl\workbook.xml
“文件”
你会发现上次从Excel保存的绝对path。
这就是为什么与其他人共享与工作有关的电子表格不是一个好主意,除非您先清除这类信息。
我不知道如何在二进制格式文件中find它。