PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → [WD16] extraire le contenu d'un fichier word
[WD16] extraire le contenu d'un fichier word
Iniciado por mr_awd, 07,ene. 2012 22:39 - 13 respuestas
Miembro registrado
119 mensajes
Publicado el 07,enero 2012 - 22:39
Bonjour tout le monde,

dans le cadre d'un projet de développement d'une solution documentaire je devrai pouvoir lire un certain nombre de fichiers word sans que l’interface word soit ouverte.

Je remercierais jamais assez celui ou celle qui me pointera vers un exemple...

Les recherches sur internet m'ont conduites à tomber sur l'exemple "pilotage word" seulement, je ne vois pas de méthode "lire le contenu", je seche un peu...

Toute idée est donc plus que bienvenue!

Merci.

Adi
Miembro registrado
119 mensajes
Publicado el 09,enero 2012 - 13:04
Bonjour,

bon, après beaucoup de recherches sur MSDN, j'ai enfin pu trouver la méthode dont j'ai besoin d'utiliser pour parvenir à sélectionner tout le texte dans le fichier Word. Il s'agit de la méthode wholestory...
Et donc avec le code suivant j'arrive à ouvrir le fichier word et y sélectionner le texte entier:

sFilepath est une chaîne = "C:\Users\username\Desktop\test.docx"
stemp est une chaîne UNICODE
autWorddoc est un objet Automation "Word.Application"
autWorddoc>>documents>>add(sFilepath)
autWorddoc>>visible=Vrai
autWorddoc>>Selection>>WholeStory
stemp = autWorddoc>>Selection>>copy
Trace(stemp)

mais la trace m'envoi toujours 0 et pas le texte qui dans ce cas est "ceci est un test".

Auriez-vous une idée?

Merci beaucoup pour votre aide.

Adi
Miembro registrado
119 mensajes
Publicado el 09,enero 2012 - 13:29
C'est trouvé, il faut utiliser stemp = autWorddoc>>Selection>>Text()
Trace(stemp) envoi maintenant le contenu du fichier. L'avantage est qu'il échappe les image et c'est ce que nous voulions :-)

Tout va donc bien, merci à moi même :-)

Adi
Miembro registrado
55 mensajes
Publicado el 09,enero 2012 - 13:45
Merci beaucoup, je viens de poster pour le même problème ^^
Vous venez de m'enlever une ENORME épine du pied !

Merci encore, bonne année
Publicado el 05,marzo 2012 - 18:13
Bonjour,

Merci également pour votre solution. Ça m'a été d'un grand secours.

Laurent.
Publicado el 28,abril 2012 - 23:58
merci bcp pour ta soulution elle vien de me sauver la vie
Publicado el 29,enero 2013 - 16:51
voici le code modifier sans ouvrir le word
sFilepath est une chaîne = "C:\Documents and Settings\IBR INFO\Mes documents\location.doc"
stemp est une chaîne UNICODE
autWorddoc est un objet Automation "Word.Application"
autWorddoc>>documents>>add(sFilepath)
autWorddoc>>visible=Faux
autWorddoc>>Selection>>WholeStory
stemp = autWorddoc>>Selection>>copy
//Trace(stemp)

Texte1=PressePapier() //texte1 est un champ de saisie
Publicado el 29,enero 2013 - 17:34
Merci pour la réponse mais si vous regardez la 2ème réponse le même code y figure déjà :-)
Publicado el 31,enero 2013 - 07:43
oui vous dite deregardez le code de la 2ème réponse qui est le même alors regarde très bien c'est différent mon vieu si vous exécuté le code dela 2ème réponse le word s'ouvre a chaque lecture y comprie la fenetre trace alors je vous lesse deviné si j'ai 7000 fichier word de patient combien de temp faudra t'il et quel puissant pc capable d'ouvrir word et lire 7000 doc en RAM.
mon code lit le contenu sans ouvrir le word et le colle dans un champ de saisi ou mieu dans un tableau qui port mes 7000 doc comme je les fait en quelque minute pour un medecin.....
Publicado el 31,enero 2013 - 07:43
mais concernant le contenu zone de texte dans word ne sont pas récupéré alors avais vous idée comment extraire le contenu aussi avec windev
Miembro registrado
119 mensajes
Publicado el 31,enero 2013 - 13:35
Salut elhacene,

elhacene a écrit dans le message de news <9015a33ce9042bebaf0636fefb48cb04@news.pcsoft> :
> mais concernant le contenu zone de texte dans word ne sont pas récupéré alors avais vous idée comment extraire le contenu aussi avec windev

En ce qui concerne le nombre de fichiers à traiter et la vitesse d'exécution, je propose d'utiliser les thread. Je traite plus de 160 000 fichiers sans problème.Le nombre de fichiers à traiter grandit de +- 300 par jour (en plus de vérifier les changement de fichiers existants!!!)
Il est claire que tu devras implémenter une sorte de sémaphores pour ne pas tuer la mémoire de ta machine, il faut donc avoir un nombre de thread fixe, disons 3 et de coordonner l'ouverture de fichiers par des sémaphores (faire communiquer le thread entre eux) pour que, entre autre, 2 thread n'ouvrent pas le même fichier en même temps (par exemple)... Chez moi, je gère aussi le temps de lecture d'un fichier (s'il dépasse un certain laps de temps le chemin de fichier est noté et sera traité par une "application fille" qui elle travaille à son aise sur une 2ème machine.

Pour ce qui est l'ouverture de word quand ce dernier est piloté à partir du code proposé, l'instruction autWorddoc>>visible= vrai ou faux fait de sorte à ce que la fenêtre de Word s'ouvre ou pas (faux = pas d'ouverture, vrai = ouverture de la fenêtre).

Et pour ce qui est de copier le contenu du fichier, le code que tu proposes ne fonctionnera pas. Si tu regardes bien ma réponse à ma question tu trouveras ce qu'il faut faire, si non la librairie MSDN t'aidera aussi :

http://msdn.microsoft.com/fr-fr/library/bb386277.aspx
http://msdn.microsoft.com/fr-fr/library/cc850833.aspx
http://support.microsoft.com/kb/316384

Il y a même moyen d'y extraire que le texte réel et ne pas récupérer les signes de formatage du document (voir premier lien).
Si non, servie comme ça, sur le plateau, voici le code qui extrait tout le bazar d'un document word:

sFilepath est une chaîne = "C:\Users\username\Desktop\test.docx"
stemp est une chaîne UNICODE
autWorddoc est un objet Automation "Word.Application"
autWorddoc>>documents>>add(sFilepath)
autWorddoc>>visible=faux
autWorddoc>>Selection>>WholeStory
stemp = autWorddoc>>Selection>>Text()

Salutations
Publicado el 11,junio 2015 - 11:39
Bonjour ,

Svp quelqu'un peut m'aider??, je veux développer une application qui permet d'ajouter des documents de type (excel,word,pdf...) dans une base de donné sql server aprés je veux manipuler ces documents (modifier leurs contenu , supprimer..)

Merci d'avance
Miembro registrado
135 mensajes
Publicado el 22,septiembre 2017 - 09:38
Bonjour,

J'ai utilisé le code ci-dessous proposé par ADI

sFilepath est une chaîne = "C:\Users\username\Desktop\test.docx"
stemp est une chaîne UNICODE
autWorddoc est un objet Automation "Word.Application"
autWorddoc>>documents>>add(sFilepath)
autWorddoc>>visible=Vrai
autWorddoc>>Selection>>WholeStory
stemp = autWorddoc>>Selection>>copy
Trace(stemp)

Le add dans l'instruction autWorddoc>>documents>>add(sFilepath) est refusé et povoque une erreur
J'ai remplacé add par 'open'
Cela fonctionne, à ceci pret que je n'obtiens pas la totalité de du texte contenu dans le fichier Word

Le texte word est dans des tableaux et comprend plusieurs pages .....

Je cherche à récupérer la totalité du texte en brut

Quelles modifs à faire ?
Je ne connais pas la programmation microsoft

Merci d'avance

--
Dede 110 Windev depuis version 1.5
Miembro registrado
1 mensaje
Publicado el 02,abril 2019 - 12:45
Merci les. Vous venez de résoudre mon problème :merci: