Objet COM

Résolu
raven44 Messages postés 315 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 21 mars 2011 - 23 mars 2006 à 09:49
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 23 mars 2006 à 13:31
Bonjour à tous,

J'instancie un objet COM ('word.application') afin de récupérer un document word au format texte, ce que j'arrive à faire. Mon problème que je signale en rouge ci-dessous est que j'aimerai insérer des saut de ligne comme il est possible de le faire en VBScript.

$word = new COM("word.application") or die("Impossible d\'instancier word");
$word->visible = 1;

$word->Documents->Open("C://document.doc");
$word->ActiveDocument->SaveAs("c:/document.txt",2);

Je pense qu'il y a un paramètre a rajouter a cette ligne la après le '2' mais je ne sais pas lequel !!.

$word->Quit();
$word = null;
unset ($word);

Merci d'avance.

23 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
23 mars 2006 à 13:31
$sString = file_get_contents ('C://document.txt');
$sString = str_replace (':', "\r\n", $sString);
file_put_contents ('C://document2.txt', $sString);

si tu n'es pas en php5, remplace file_get_contents et file_put_contents par leurs équivalents php4. Bref tu lis, tufous dans une chaîne, tu remplaces, tu réécris.
3
Tarvos Messages postés 40 Date d'inscription vendredi 11 mars 2005 Statut Membre Dernière intervention 24 mars 2006
23 mars 2006 à 10:52
C'est à dire insérer des sauts de lignes? Tu peux toujours modifier le fichier texte après...
0
raven44 Messages postés 315 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 21 mars 2011 1
23 mars 2006 à 10:58
Oui en effet mais je ne veu pas que se soit l'utilisateur qui fasse des saut de ligne, je dois pouvoir les faire directement dans mon code !! En faisant une macro avec Word j'ai pu récupérer le VBscript qu'il execute lors de la génération du .txt avec insertion de saut de ligne .

Sub Macro1()
ActiveDocument.SaveAs FileName:="SPATOLA2.txt",FileFormat:=wdFormatText,
LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword
:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:=
False, Encoding:=1252, InsertLineBreaks:=True, AllowSubstitutions:=False, _
LineEnding:=wdCRLF
End Sub

Cette partie de code Vbscript en rouge, il faudrait que je puisse la faire en php.

Merci.
0
Tarvos Messages postés 40 Date d'inscription vendredi 11 mars 2005 Statut Membre Dernière intervention 24 mars 2006
23 mars 2006 à 11:09
$fh = fopen('C://document.txt','w+');
while (!feof($fh)) {
$content = fgets($fh,256)."\r\n";
}

fwrite($fh,$content);

non?

                
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
raven44 Messages postés 315 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 21 mars 2011 1
23 mars 2006 à 11:11
Ah oui tu veux que je réécrive dans le document texte après !!

Oui ca peut etre une solution intéressante, je vai tester.
0
raven44 Messages postés 315 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 21 mars 2011 1
23 mars 2006 à 11:15
Arrrr !! léger problème, j'écris bien dans le fichier mais je n'écris rien !!

Au contraire, tout s'efface !! étrange non ??
0
Tarvos Messages postés 40 Date d'inscription vendredi 11 mars 2005 Statut Membre Dernière intervention 24 mars 2006
23 mars 2006 à 11:17
$fh = fopen('C://document.txt','w+');
while (!feof($fh)) {
$content = fgets($fh,256)."\r\n";
echo fgets($fh,256);
}
echo $content;

ça retourne quoi ça?
0
raven44 Messages postés 315 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 21 mars 2011 1
23 mars 2006 à 11:22
Ca ne renvoi rien, il ne doit pas passer dans le while !! semble t'il !
0
Tarvos Messages postés 40 Date d'inscription vendredi 11 mars 2005 Statut Membre Dernière intervention 24 mars 2006
23 mars 2006 à 11:24
if (fopen('C://document.txt','w+')) echo 'Youpi';
0
raven44 Messages postés 315 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 21 mars 2011 1
23 mars 2006 à 11:27
ca, Ca fonctionne, il ouvre donc bien le fichier en mode ecriture ca vien du while !! c clair
0
Tarvos Messages postés 40 Date d'inscription vendredi 11 mars 2005 Statut Membre Dernière intervention 24 mars 2006
23 mars 2006 à 11:29
$fh = fopen('C://document.txt','w+');
while (!feof($fh)) {
$content . = fgets($fh,256)."\r\n";
}

fwrite($fh,$content);
0
raven44 Messages postés 315 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 21 mars 2011 1
23 mars 2006 à 11:33
Ca ne change strictement rien, je ne comprend vraiment pas pourquoi !!
0
Tarvos Messages postés 40 Date d'inscription vendredi 11 mars 2005 Statut Membre Dernière intervention 24 mars 2006
23 mars 2006 à 11:35
$fh = fopen('C://document.txt','w+');
while (!feof($fh)) {
$content . = fgets($fh,256)."\r\n";
}

rewind($fh);
fwrite($fh,$content);

                
0
raven44 Messages postés 315 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 21 mars 2011 1
23 mars 2006 à 11:42
Idem, toujours vide le fichier !! et je peux t'assurer que le doc lui n'est pas vide !! puisque sans réécriture j'obtiens les informations !!
0
Tarvos Messages postés 40 Date d'inscription vendredi 11 mars 2005 Statut Membre Dernière intervention 24 mars 2006
23 mars 2006 à 11:46
Bon alors on va essayer une autre manière, plus lourde m'enfin...

$lines = file('C://document.txt');
$content = implode("\r\n",$lines);
file_put_contents('C://document.txt',$content);

Et question bête... t'as bien pensé à changer le nom du fichier?
0
raven44 Messages postés 315 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 21 mars 2011 1
23 mars 2006 à 11:51
LOL oui t'inquiète pas, ces 3 lignes tu les mets dans le while ou complètement en dehors ??
0
Tarvos Messages postés 40 Date d'inscription vendredi 11 mars 2005 Statut Membre Dernière intervention 24 mars 2006
23 mars 2006 à 11:52
Tu vires le premier truc et tu met juste ça :)
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
23 mars 2006 à 11:53
Hello,

'w+' écrase le fichier directement. Utilisez 'r+' plutôt, avec la même méthode qui devrait fonctionner.
0
raven44 Messages postés 315 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 21 mars 2011 1
23 mars 2006 à 11:54
OK et bien en reviens au point de départ, tout s'efface dans le fichier et rien n'est inscrit !
0
raven44 Messages postés 315 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 21 mars 2011 1
23 mars 2006 à 11:56
ah bah c'est deja mieu avec 'r+', il n'efface plus le fichier merci a malalam

Seulement il n'a pas fai les saut de ligne !!
0
Rejoignez-nous