IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Modules Perl Discussion :

Récupération de texte avec win32::ole


Sujet :

Modules Perl

  1. #1
    Membre du Club Avatar de bluecurve
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 68
    Points : 43
    Points
    43
    Par défaut Récupération de texte avec win32::ole
    J'ai trouvé un bout de code tout a fait fonctionnel pour extranre du texte de fichier .doc mais le seul probleme c'est que comme il utilise deux méthodes d'extraction de ne sais pas comment mettre mon return

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     my $input_file = 'test.doc';
     $input_file		= Win32::GetCwd() . "/$input_file" if $input_file !~ /^(\w:)?[\/\\]/;
     die "File $input_file does not exist" unless -f $input_file;
     
     my $word = Win32::OLE->new('Word.Application', 'Quit') || die "Couldn't run Word";
     my $doc = $word->Documents->Open($input_file);
     
     my $index = 0;
     
       # Extract using first method
       for my $paragraph (in $doc->Paragraphs)
       {
    		$index++;
        	# Remove trailing ^M (the paragraph marker) from Range.
        	my($text) = substr($paragraph->Range->Text, 0, -1);
    		print "Paragraph: $index. Text: <$text>\n\n";
       }
     
      print '-' x 50, "\n";
     
       # Extract using second method
        my $paraCount = $doc->Paragraphs->Count;
     
        for ($index = 1 ; $index <= $doc->Paragraphs->Count ; ++$index)
        {
            my($text) = $doc->Paragraphs($index);
    	    print "Paragraph: $index. Text: <", $text->Range->Text, ">\n\n";
        }
     
       print '=' x 50, "\n";
       $doc->{Saved} = 1;
       $doc->Close;
    Thx et bon codage

  2. #2
    Membre du Club Avatar de bluecurve
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 68
    Points : 43
    Points
    43
    Par défaut
    Personne n'aurais un petite idée ou c'est moi qui fait fausse route ?

  3. #3
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    La réponse est très simple... Mais sous quel format veux-tu ce texte ? Par exemple avec un tableau de paragraphes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    sub extract_text_by_par {
      my $input_file = shift;
      $input_file = Win32::GetCwd() . "/$input_file" if $input_file !~ /^(\w:)?[\/\\]/;
      die "File $input_file does not exist" unless -f $input_file;
     
      my $word = Win32::OLE->new('Word.Application', 'Quit') || die "Couldn't run Word";
      my $doc = $word->Documents->Open($input_file);
     
      my @result;
     
      # Extract using first method
      for my $paragraph (in $doc->Paragraphs)
      {
        # Remove trailing ^M (the paragraph marker) from Range.
        my($text) = substr($paragraph->Range->Text, 0, -1);
        push @result, $text;
      } 
     
      return @result;
    }
    --
    Jedaï

Discussions similaires

  1. API Win32 : Erreur d'affichage de texte avec TextOut
    Par anezvox1 dans le forum Windows
    Réponses: 2
    Dernier message: 10/09/2014, 17h11
  2. Récupération de donnée dans une valeur texte avec VBA
    Par thibthib71 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/03/2013, 18h02
  3. Récupération dans un fichier texte avec PHP
    Par bombers dans le forum Langage
    Réponses: 10
    Dernier message: 15/03/2013, 15h41
  4. selection texte avec OLE automation
    Par Liopi dans le forum WinDev
    Réponses: 4
    Dernier message: 18/12/2007, 14h32
  5. Réponses: 2
    Dernier message: 04/09/2007, 13h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo