所以,我有一个 office word 文档。我需要浏览文档并获取所有“单词”。然后我想将所有这些“单词”放入 List 对象中。这是我当前问题的一部分。
第 2 部分.... 节省资源的方法我可以比较 2 个“单词”以查看它们是否匹配。我找到了这个 .ddl 我不知道它是否是正确的... http://diffplex.codeplex.com/
我在这个问题 here 中找到了这段代码, 但对在我的服务器上安装 office 有依赖性,这是一个 web 应用程序..
最佳答案
假设我足够了解你的问题,我会提供一个答案,对我来说是:
第 1 部分:阅读 word 文档。
第 2 部分:比较 word 文档,我将其解释为比较从每个单词解析的字符串。
//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;
}
}
我想就这些了,希望对你有帮助。
关于c# - MVC4 c# 获取office word文档,并转换为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21589423/