从.xls文件中获取“工作簿的绝对path”

当我在一个特定的.xls文件上使用Excel“Document Inspector”来检查“隐藏的属性或个人信息”时,它说:

以下文件信息被发现:
*工作簿的绝对path

如何从文件中获取工作簿的绝对path? 如果需要以编程方式完成,我可以使用Java(如Apache POI)或VBA。

我知道文件当前保存的位置,但是我想提取的是保存在文件中的工作簿的绝对path。 这是我可以知道作者保存的地方。

这是文件发生了什么事情:

  1. 有人创作它,把它保存在我不知道的绝对文件path中
  2. 他们上传到一个网站
  3. 我从网站上下载了它

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

列出常见嫌犯SummaryInformationDocumentSummaryInformationWorkbook旁边的任何embedded对象:
java -cp poi-3.16-beta1.jar org.apache.poi.poifs.dev.POIFSLister file.xls

因此,在运行工具并logging输出之后,可以通过Excel Document Inspector删除属性,然后再次执行这些工具。 输出可以是diffic,你可能会find罪魁祸首。

假设它是一个.xlsx文件,而不是一个老式的.xls文件,你可以

  1. 将工作簿重命名为.zip文件
  2. 查看.zip文件中的xl\workbook.xml “文件”

你会发现上次从Excel保存的绝对path。

这就是为什么与其他人共享与工作有关的电子表格不是一个好主意,除非您先清除这类信息。


我不知道如何在二进制格式文件中find它。