Comment extraire du texte à partir des documents MS office en C#
J'ai essayé d'extraire d'un texte(chaîne de caractères) à partir de MS Word (.doc, .docx), Excel et Powerpoint à l'aide de C#. Où puis-je trouver un logiciel gratuit et simple .Net de la bibliothèque à lire des documents MS Office?
J'ai essayé d'utiliser NPOI mais je n'ai pas un échantillon sur la façon d'utiliser NPOI.
Vous devez vous connecter pour publier un commentaire.
À l'aide de PInvokes vous pouvez utiliser le IFilter interface (sur Windows). Les IFilters pour de nombreux types de fichiers sont installés avec Windows (vous pouvez les parcourir à l'aide de cette outil. Vous pouvez simplement demander à la IFilter pour vous renvoyer le texte à partir du fichier. Il y a plusieurs séries de code d'exemple (ici en est un exemple).
Pour Microsoft Word 2007 et Microsoft Word 2010 (.docx) de fichiers, vous pouvez utiliser le SDK Open XML. Cet extrait de code va ouvrir un document et le retourner à son contenu sous forme de texte. Il est particulièrement utile pour ceux qui cherchent à utiliser des expressions régulières pour analyser le contenu d'un document Word. Pour utiliser cette solution, vous aurait besoin de référence DocumentFormat.OpenXml.dll qui fait partie du SDK OpenXML.
Voir: http://msdn.microsoft.com/en-us/library/bb448854.aspx
DocumentFormat.OpenXml.Packaging
DocumentFormat.OpenXml.Wordprocessing
Et vous avez besoin de faire référence àWindowsBase.dll
pour que cela fonctionne. Autre que cela; solution sympa.Tika est très utile et facile à extraire du texte à partir de différents types de documents, y compris les fichiers de microsoft office.
Vous pouvez utiliser ce projet qui est comme une belle pièce d'art faite par Kevin Miller
http://kevm.github.io/tikaondotnet/
Simplement ajouter ce package NuGet
https://www.nuget.org/packages/TikaOnDotNet/
et puis, cette ligne de code va faire de la magie:
Laissez-moi juste corriger un peu la réponse donnée par KyleM. J'ai juste ajouté de traitement de deux nœuds supplémentaires, ce qui influence le résultat: l'un est responsable de l'horizontale tabulation avec "\t", d'autres - pour la tabulation verticale avec "\v". Voici le code:
De L'Utilisation De Microsoft Bureau D'Interopérabilité. C'est gratuit et plus lisse. Voici comment j'ai tiré tous les mots à partir d'un doc.
Puis faire ce que vous voulez avec les mots.
Un peu en retard à la fête, mais tout de même - aujourd'hui, vous n'avez pas besoin de télécharger quoi que ce soit - tout est déjà installé .NET:
(assurez-vous d'ajouter une référence à System.IO.La Compression et du Système.IO.La Compression.Système de fichiers)
Number of entries expected in End Of Central Directory does not correspond to number of entries in Central Directory.
ZipFile
notion d'un fichier zip (c'est à dire le fichier docx dans ce cas) d'être corrompu...Simple!
De ces deux étapes, vous y:
1) Utiliser le Bureau de la bibliothèque d'Interopérabilité convertir DOC en DOCX
2) Utiliser DOCX2TXT pour extraire le texte à partir de la nouvelle DOCX
Le lien pour la 1) a une très bonne explication de la façon de faire la conversion et même un exemple de code.
Une alternative à l'2) il suffit de dézipper le fichier DOCX en C# et rechercher les fichiers dont vous avez besoin. Vous pouvez lire au sujet de la structure du fichier ZIP ici.
Edit: Ah oui, j'ai oublié de signaler que Skurmedel fait ci-dessous que vous devez avoir microsoft Office installé sur le système sur lequel vous souhaitez effectuer la conversion.
Interop
est utilisable, mais devrait être évitée si possible.J'ai fait un docx texte extracteur une fois, et c'était très simple. Fondamentalement, docx, et de l'autre (nouveau) les formats que je présume, est un fichier zip avec un tas de fichiers XML à la place. Le texte peut être extraite à l'aide d'un XmlReader et en utilisant seulement .NET-classes.
Je n'ai pas le code de plus, il semble que :(, mais j'ai trouvé un gars qui ont un semblable solution.
Peut-être que ce n'est pas viable pour vous si vous avez besoin de lire .doc et .les fichiers xls si, puisqu'ils sont les formats binaires et probablement beaucoup plus difficile à analyser.
Il y a aussi le OpenXML SDK, toujours en CTP si, publié par Microsoft.
Si vous êtes à la recherche pour asp.net options, l'interopérabilité ne fonctionnera pas, sauf si vous installez office sur le serveur. Même alors, Microsoft a dit de ne pas le faire.
J'ai utilisé Spire.Doc, a fonctionné à merveille. Spire.Doc télécharger Même de lire des documents qui ont été vraiment .txt, mais ont été sauvés .doc. Ils ont des versions gratuites et payantes. Vous pouvez également obtenir une licence d'évaluation qui supprime un avertissement de documents que vous créez, mais je ne fais pas tout, il suffit de rechercher si la version gratuite a travaillé comme un charme.