因此,我有一个Office Word文档。我需要遍历文档并获取所有“单词”。然后,我想将所有这些“单词”扔到List对象中。这是我目前的问题之一。
第2部分。资源高效的方式,我可以比较2个“单词”以查看它们是否匹配。我发现了这个.ddl,我不知道它是否正确... http://diffplex.codeplex.com/
我在这里的这个问题中找到了此代码,但是在我的服务器上安装office时存在依赖性,这是Web应用程序。
假设我对您的问题已足够理解,我将提供一个答案,对我来说是:
第1部分:阅读Word文档。
第2部分:比较单词文档,我解释了该文档以比较从每个单词解析的字符串。
//Part 1
var applicationWord = new Microsoft.Office.Interop.Word.Application();
object filename = @"C:\Users\Omri\Desktop\Test.docx";
object missing = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Word._Document oDoc;
oDoc = applicationWord.Documents.Open(filename, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing);
这只是打开word文档。顺便说一句,您可能必须在服务器上安装Office,我看您对此很满意。
现在解析字符串-我提供了一个正则表达式来从字符串中删除所有非字母数字字符,这是我的工作假设。您可以根据自己的喜好更改它。还对图片等进行了测试,将其删除。
var wordsList = new List<string>();
foreach (var range in oDoc.StoryRanges)
{
var tempString = range.Text;
tempString = Regex.Replace(tempString, @"[^a-zA-Z0-9 -]", string.Empty);
wordsList.AddRange(tempString.Split(new char[] { ' ' } ).ToList());
}
这将为您提供Word文档中的字符串列表。
//Part 2
bool wordMatch = data.Count == data2.Count; //quick initial check;
//you can check for wordMatch == false and return immediately
wordsList.Sort(); //sorting in lexicographical order so will be easy to compare
wordsList2.Sort(); //this is a 2nd word document
for (int i = 0; i < data.Count; i++)
{
if (data.ElementAt(i) != data2.ElementAt(i))
{
wordMatch = false;
break;
}
}
我想就是这样,希望对您有所帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句