2009-07-14 14 views
3

Comment extraire les données d'un document Word en utilisant Perl?Comment puis-je extraire des données dans un document Word en utilisant Perl?

+4

** ** Qu'est-ce que les données particulières que vous voulez extraire? Sur quelle plateforme? Avez-vous une copie de Word installée? S'agit-il d'un travail par lots ou le script va-t-il être appelé par un serveur Web? Le titre et le corps de votre question sont identiques, indiquant que vous n'avez pas beaucoup réfléchi à la formulation de votre question. –

+1

Aussi, voir http://stackoverflow.com/questions/1110409/how-can-i-programmatically-convert-word-doc-or-docx-files-into-text-files/1110626#1110626 si vous êtes sur Windows et peut utiliser 'Win32 :: OLE' et tout ce que vous voulez, c'est le texte dans le document. –

+0

suis en utilisant windows et je veux extraire les abréviations trouvées dans ce document Word .... c'est ce que ma tâche est ... – User1611

Répondre

0

Sous Windows, vous devriez utiliser les interfaces COM pour accéder à la fonctionnalité Word.

Si vous voulez le faire multiplate-forme, pensez à exécuter "catdoc" ou libwv.

1

Vous pouvez utiliser Win32 :: OLE si le script doit s'exécuter sur une boîte Windows avec Word installé.

Quelle plate-forme utilisez-vous? Peut-être antiword pourrait être appelé?

+0

utilise Windows ... – User1611

0

Les documents Word ne sont plus des fichiers plats. Trouver un .docx, le renommer avec une extension .zip, et vous pouvez l'ouvrir et fouiller à l'intérieur pour avoir une idée de comment les choses sont disposées. Je serais généralement d'accord que Microsoft a fourni des moyens de le faire déjà.

2

Si vous n'êtes pas sur Windows, je pense que le meilleur chemin pourrait être de le convertir en premier. Si vous n'utilisez pas Windows et n'avez pas accès à Win32::OLE, vous pouvez utiliser OpenOffice to convert the documents.

Vous pouvez boucler le script dans le lien vers votre programme Perl. Bien que le lien commence par PDF si vous lisez dessus, vous pouvez le convertir en texte. Voir également this stackoverflow post about converting doc and docx files.

+0

Pouvez-vous me donner un exemple simple de la lecture d'un document Word et de l'impression de ses données sur l'invite de commande ... – User1611

1
use Win32::OLE; 
use Win32::OLE::Enum; 

$document = Win32::OLE -> GetObject($ARGV[1]); 
open (FH,">$ARGV[0]"); 

print "Extracting Text ...\n"; 

$paragraphs = $document->Paragraphs(); 
$enumerate = new Win32::OLE::Enum($paragraphs); 
while(defined($paragraph = $enumerate->Next())) 
{ 
    $style = $paragraph->{Style}->{NameLocal}; 
    print FH "+$style\n"; 
    $text = $paragraph->{Range}->{Text}; 
    $text =~ s/[\n\r]//g; 
    $text =~ s/\x0b/\n/g; 
    print FH "=$text\n"; 
} 

volé à here

Questions connexes