2017-06-22 20 views
0

Wordファイル(doc/docx)からすべての単語を抽出してリストに入れたいと思います。 Microsoft.Office.Interopは、段落を抽出してリストに追加したい場合にのみ機能します。doc/docxファイルから単語を抽出するC#

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は大きなファイルから抽出するための良いツールではないと思います。 申し訳ありません私の英語は良くありません。

+2

あなたはこれに関する調査をしましたか?これは以前に尋ねられた質問のようです。 –

+0

はい、私はこのことについて研究しています。私はtxtファイルから単語を抽出する方法を見つける、私はまた、docxファイルから抽出する方法を見つけたが、この方法は大きなファイルのために動作しません。だからこそ私はここで尋ねます。 – titi2fois

+0

あなたは[ask]を見てください。以前に何度も質問されていた疑問を尋ねているときには、研究の証拠、つまりリンクなどの形で提示する必要があります。研究があなたの答えを見つけるのを助けなかったことを具体的に説明してください。 –

答えて

1

段落内のオブジェクトはRunと呼ばれますが、Interopで使用できるかどうかはわかりませんがパフォーマンスを向上させるために、大量のドキュメントを処理する必要がある場合に備えて、OpenXmlSdkに切り替えることをお勧めします。

Interopに固執したいのであれば、各段落を配列(区切り文字は明らかにスペース)に分割し、その後にすべての単語を追加するだけです。

+0

OpenXmlSdkではDocファイルを操作できますか?なぜなら、それはOpen XML文書のためのものだと思っていたからです。 – titi2fois

+0

両方を指定して本当に必要かどうかは分かりませんでした。 OpenXmlSdkはOpenXml標準用です。さもなければ、Aspose.Wordsを見て、それはナゲットパッケージとして利用可能です。両方の形式を使用することができます。 – codeguy

+0

はい私はWordがファイルをdoc形式またはdocx形式に保存するために使用するWordのバージョンによって異なりますが、より一般的なものはdoc形式です。 – titi2fois

関連する問題