我必须从很多(我的小工作样本有数百个,总数可能是数千个)Microsoft Office文件中提取元数据,主要是Word文件。
这些文件Word版本从Word 2.0转到Word 2007。
我必须在.net 3.5中使用它(使用c#)并且它是一个本地winforms应用程序。
我认为,我可以使用OLE自动化(DsoFile.dll)从最新的元数据中提取元数据。我和其中一些人成功了。
问题是DsoFile不支持旧格式。他们可能不会使用OLE。
我做了很多谷歌搜索,我发现获得我想要的数据的最好(可能是唯一的)方法是使用antiword(http://www.winfield.demon.nl/)。 使用antiword,我可以调用其进程并收集其输出。它可以提取一些数据,但不是我需要的全部数据。 示例:antiword只给我一个存储日期,我需要其中两个。
还有wvware,但我猜它只是linux。
另一种选择是gnu libextractor但我找不到在.net上使用的方法
Office Interop将是一个绝望的最后手段。我还没有测试过这个选项,但是当我想要处理大量具有良好性能的文件时,我猜它不是一个选项。
有人可以帮忙吗?如果您需要更多数据,请询问。
对不起我的英语,我不是母语人士。
答案 0 :(得分:2)
我曾经在商业办公室工作元数据提取和报告工具。这不是一件容易的事,特别是如果您还想删除任何元数据。从它的声音,你只是想报告它,所以这更好。
从word2000开始,Word文件存储在OLE Compound文档中。网上有很多关于阅读这些文件的文档,但请记住,这只会给你一小部分元数据。单词doc的大多数“肉”都存储在复合doc文件中的大二进制blob中,并且这些blob的格式是专有的。
网络上有关于DOC文件格式的文档。
http://msdn.microsoft.com/en-us/library/cc313118.aspx
但这是一个非常规范,非常复杂。不过,你可能只能找出你需要处理的那些部分。
较新的DOCX文件更易于处理(并且潜伏的元数据也少得多)。