从.xls文件获取“工作簿的绝对路径”

时间:2016-12-13 23:48:45

标签: excel vba excel-vba apache-poi

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

  

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

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

我知道文件当前保存在哪里,但我要提取的是保存在我的文件中的工作簿的绝对路径。这样我就可以知道作者在哪里保存了它。

这是文件发生的事情:

  1. 有人创作了它,将它保存在我不知道的某个绝对文件路径中
  2. 他们将其上传到网站
  3. 我是从网站
  4. 下载的

    Excel表示该文档包含步骤1的绝对路径。我是在这条路径之后,而不是我在步骤3保存它的地方,因为我知道。

2 个答案:

答案 0 :(得分:10)

我可以通过简单地创建一个空Excel文件,添加公式,将其保存为BIFF8(.xls)来重现该警告消息。然后,文档检查员将警告绝对路径。 ...但在我的情况下,文件中没有文件名。

验证这一点的一种简单方法是在十六进制编辑器中打开文件并搜索一个众所周知的保存位置(即存储虚拟/测试文件的位置) - 这可以存储为ASCII或作为16位字符串,即每个奇数字节都是一个字符。

如果您想使用POI开发人员工具,可以使用以下内容:

列出所有Excel记录:
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旁边的所有嵌入对象:
java -cp poi-3.16-beta1.jar org.apache.poi.poifs.dev.POIFSLister file.xls

因此,在运行工具并记录输出后,您可以通过Excel Document Inspector删除属性并再次执行这些工具。输出可以分散,你可能会发现罪魁祸首。

答案 1 :(得分:9)

假设它是.xlsx文件而不是旧式.xls文件,您可以

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

    ,您将找到上次从Excel保存的绝对路径。

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

    我不确定如何在二进制格式文件中找到它。