Convertir des fichiers Word doc ou docx en fichiers texte?
J'ai besoin d'un moyen de convertir .doc
ou .docx
extensions .txt
sans rien installer. Aussi, je ne veux pas avoir à ouvrir manuellement Mot pour ce faire, évidemment. Tant qu'il est en cours d'exécution sur auto.
Je pensais que soit Perl ou VBA pourrait faire l'affaire, mais je ne peux pas trouver quelque chose en ligne.
Des suggestions?
source d'informationauteur CheeseConQueso | 2009-07-10
Vous devez vous connecter pour publier un commentaire.
Note qu'une excellente source d'information pour les applications Microsoft Office est la Objet Navigateur. Vous pouvez y accéder via
Tools
→Macro
→Visual Basic Editor
. Une fois que vous êtes dans l'éditeur, appuyez sur F2 pour naviguer dans les interfaces, les méthodes et les propriétés fournies par les applications Microsoft Office.Voici un exemple d'utilisation de Win32::OLE:
Un simple Perl seule solution pour docx:
Utilisation Archive::Zip pour obtenir le
word/document.xml
fichier à partir de votredocx
fichier. (Un docx est juste une archive compressée.)Utilisation XML::LibXML pour l'analyser.
Ensuite utiliser XML::LibXSLT pour le transformer en format texte ou html. Recherche sur le web pour trouver une belle docx2txt.xsl fichier 🙂
Cheers !
J.
Je recommande fortement AsposeWords si vous pouvez le faire en Java ou .NET. Il peut convertir, sans Mot installé, entre tous les principaux types de fichiers de texte.
Si vous avez quelques saveurs de unix installé, vous pouvez utiliser les 'chaînes' utilitaire pour trouver et extraire tous les formats de chaînes à partir du document. Il y aura quelques dégâts avant et après le texte que vous recherchez, mais les résultats seront lisibles.
Pour .doc, j'ai eu un certain succès avec la ligne de commande linux outil antiword. Il extrait le texte .doc très rapidement, donnant un bon rendu de l'indentation. Ensuite, vous pouvez tuyau vers un fichier texte dans bash.
Pour .docx, j'ai utilisé le OOXML SDK comme certains autres utilisateurs mentionnées. C'est juste une .NET de la bibliothèque pour la rendre plus facile à travailler avec l'OOXML qui est zippée dans un fichier OOXML. Il y a beaucoup de métadonnées que vous souhaitez annuler si vous êtes seulement intéressé dans le texte. Certains autres ont déjà écrit le code que je vois: DocXToText.
Aspose.Les mots ont un très simple API avec un grand soutien aussi, je l'ai trouvé.
Il y a aussi cette commande bash de commandlinefu.com qui fonctionne par décompresser les .docx:
Sont que vous essayez de faire ce sans nécessitant toute installation de composants MS Office? Même alors, VBA vous demandera d'installer les bibliothèques COM au travail.
Comment sur le Perl Win32::OLE de l'automatisation?
Notez que vous pouvez également utiliser OpenOffice pour effectuer divers document, dessin, spreadhseet etc. les conversions sur les deux plateformes Windows et *nix.
Vous pouvez accéder par programmation OpenOffice (de façon analogue à la COM sur Windows) via UNO à partir d'une variété de langues pour lesquelles un UNO de liaison existe, y compris à partir de Perl via le OpenOffice::UNO module.
Sur le OpenOffice::UNO page vous trouverez également un exemple de Perl scriptlet qui ouvre un document, tout ce que vous devez faire est de les exporter vers d'
txt
à l'aide de ladocument.storeToURL()
méthode -- voir un exemple Python qui peut être facilement adapté à votre Perl besoins..du doc qui utilisent le WordprocessingML et .docx format XML peuvent avoir leur XML analysé pour récupérer le texte du document. Vous aurez à lire à leurs spécifications de comprendre des étiquettes qui contiennent le texte lisible.
Juste plaisanter.
Vous pouvez utiliser antiword pour les anciennes versions de documents Word, et d'essayer de parser le xml de la de nouveaux.
La méthode de Sinan Ünür fonctionne bien.
Cependant, j'ai eu un crash avec les fichiers que j'était en train de changer.
Une autre méthode consiste à utiliser Win32::OLE et Win32::presse-papiers en tant que tel:
Basé sur le script donné par Sigvald Refsu dans http://computer-programming-forum.com/53-perl/c44063de8613483b.htmje suis venu avec le script suivant.
Note: j'ai choisi d'enregistrer le fichier txt avec le même nom de base que le .fichier docx et dans le même dossier, mais cela peut facilement être changé
Espérons qu'elle vous aide.
Vous ne pouvez pas le faire en VBA si vous ne voulez pas démarrer Word (ou une autre application Office). Même si tu voulais parler de VB, il vous faudrait toujours commencer une (caché) de l'instance de Word pour effectuer le traitement.
Avec docxtemplatervous pouvez facilement obtenir le texte intégral d'un mot (fonctionne avec docx seulement).
Voici le code (Node.JS)
C'est juste trois lignes de code et ne dépend d'aucune instance de word (toutes les plaine JS)