我需要比较两个办公室文件,在这种情况下两个字的文件,并提供一个差异,这是有点类似于什么是显示在SVN。没有到那种程度,但至少能够突出的差异。
我试着使用office COM dll,走了这么远。
object fileToOpen = (object)@"D:\doc1.docx";
string fileToCompare = @"D:\doc2.docx";
WRD.Application WA = new WRD.Application();
Document wordDoc = null;
wordDoc = WA.Documents.Open(ref fileToOpen, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
wordDoc.Compare(fileToCompare, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
关于如何继续下一步有什么建议吗?这将是一个有很多点击率的web应用程序。使用office com对象是正确的方法吗?或者有什么其他的东西我可以看看吗?
7条答案
按热度按时间ki0zmccv1#
您应该使用Document类比较文件并在Word文档中打开结果。
r3i60tvu2#
所以我的要求是我必须使用一个.Net库,我想避免处理实际的文件,而是处理流。
ZipArchive位于System.IO中。已压缩
我所做的和它的工作相当不错的是使用ZipArchive从.Net和比较内容,而跳过.rels文件,因为它似乎是随机生成的每个文件创建.这里是我的片段:
v09wglhw3#
我同意w/ Joseph关于对字符串进行比较的观点。我还推荐一个专门构建的比较引擎(几个可以在这里找到:Any decent text diff/merge engine for .NET?),这可以帮助您避免一些常见的差异化陷阱。
h6my8fg24#
对于服务器上的解决方案,或者在未安装Word的情况下运行并使用COM工具的解决方案,可以使用XmlPowerTools的WmlComparer组件。
documentation有点局限,但下面是一个示例用法:
它会告诉你这两份文件的不同之处。
mgdq6dx15#
你真的应该把文档提取成一个字符串,然后对它进行比较。
你只关心文本的变化,而不是格式的权利?
b1zrtrql6#
此函数允许您在C#中比较两个文档以及一个文档的两个版本。
xxhby3vn7#
要在Word文档之间进行比较,您需要
1.用于操作Word文档的库,例如从Word文件读取段落、文本、表格等。您可以尝试Office Interop、OpenXML或Aspose.Words for .NET。
1.一个算法/库,用于对从两个Word文档中检索到的文本进行实际比较。您可以自己编写或使用DiffMatchPatch或类似的库。
这个问题已经过时了,现在有更多类似GroupDocs Compare的解决方案可用。
Document Comparison by Aspose.Words for .NET是一个开源展示项目,它使用Assose.Words和DiffMatchPatch进行比较。
我是Aspose的开发人员宣传员。