我想从Word文件(DOC/DOCX(中提取所有单词并将其放入列表中。似乎Microsoft.office.interop可以工作,如果我想提取段落并将其添加到列表中。
List<string> data = new List<string>();
Microsoft.Office.Interop.Word.Application app = new
Microsoft.Office.Interop.Word.Application();
Document doc = app.Documents.Open(dlg.FileName);
foreach (Paragraph objParagraph in doc.Paragraphs)
data.Add(objParagraph.Range.Text.Trim());
((_Document)doc).Close();
((_Application)app).Quit();`
我还找到了通过单词提取的方法,但是由于生成异常的循环,它与大文档无效。
`Dictionary<int, string> motRap = new Dictionary<int, string>();
Microsoft.Office.Interop.Word.Application application = new Microsoft.Office.Interop.Word.Application();
Document document = application.Documents.Open("C:/Users/Titri/Desktop/test/test/bin/Debug/po.txt");
// Loop through all words in the document.
int count = document.Words.Count;
for (int i = 1; i <= count; i++)
{
string text = document.Words[i].Text;
motRap.Add(i, text);
}
// Close word.
application.Quit();`
所以我的问题是,是否有一种方法可以从大词文件中提取单词。我认为Microsoft.office.interop不是从大文件中提取的好工具。抱歉,我的英语不好。
段落内的对象称为 Run
,尽管我不知道这是否在Interop中可用。为了提高您的经验,我建议您切换到使用OpenXmlSdk
,以防您必须处理大量文档。
如果要坚持互动,为什么不将每个段落分为数组(分界符显然是空间(,然后添加所有单词?