2017-06-22 1 views
0

Je veux extraire tous les mots d'un fichier Word (doc/docx) et les mettre dans une liste. Il semble que microsoft.Office.Interop fonctionne juste si je veux extraire des paragraphes et les ajouter dans une liste.Extrait des mots d'un fichier 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();` 

J'ai aussi trouvé le moyen d'extraire mot par mot, mais il n'a pas fait grand travaux avec le document en raison de la boucle qui génère une exception. Donc, ma question est, s'il y a un moyen d'extraire des mots d'un grand fichier de mots. Je pense que Microsoft.Office.Interop n'est pas le bon outil pour extraire d'un gros fichier. Désolé mon anglais n'est pas bon.

+2

Avez-vous fait des recherches à ce sujet? Cela semble être une question qui aurait déjà été posée auparavant. –

+0

Oui ça fait 4 jours que je fais des recherches à ce sujet. Je trouve le moyen d'extraire des mots d'un fichier txt, j'ai aussi trouvé un moyen d'extraire à partir d'un fichier docx mais de cette façon ne fonctionne pas pour les gros fichiers. Voilà pourquoi je demande ici. – titi2fois

+0

Je pense que vous devriez jeter un oeil à [demander]. Vous devez montrer des preuves de votre recherche, par exemple sous la forme de liens, etc., lorsque vous posez une question qui a probablement été posée plusieurs fois auparavant. Expliquez en particulier comment votre recherche n'a pas réussi à vous aider à trouver la réponse. –

Répondre

1

L'objet à l'intérieur d'un paragraphe est appelé Run, bien que je ne sache pas s'il est disponible ou non dans Interop. Pour améliorer votre expérience de performance, je vous suggère de passer à OpenXmlSdk, au cas où vous auriez à traiter une grande quantité de documents.

Si vous voulez vous en tenir à Interop, pourquoi ne divisez-vous pas chaque paragraphe en un tableau (délimiteur évidemment l'espace) et ajoutez tous les mots après cela?

+0

OpenXmlSdk nous permet de manipuler des fichiers Doc? Parce que je pensais que c'était seulement pour les documents Open XML – titi2fois

+0

Je ne savais pas si vous en aviez vraiment besoin comme vous l'avez spécifié tous les deux. Vous avez raison, OpenXmlSdk est uniquement pour la norme OpenXml. Sinon, jetez un oeil à Aspose.Words, il est disponible en tant que paquet-nuget. Cela vous permet d'utiliser les deux formats. – codeguy

+0

Oui, j'ai spécifié les deux parce que cela dépend de la version de Word que l'utilisateur utilisera, car Word enregistre le fichier au format doc ou docx mais le plus commun est le format doc. – titi2fois