2009-07-14 76 views
3

如何使用Perl从Word文档中提取数据?如何使用Perl在Word文档中提取数据?

+4

**你要提取什么**特定数据被盗?在什么平台上?你有没有安装Word的副本?这是一个批处理作业,还是脚本将被Web服务器调用?你的问题的标题和正文是相同的,这表明你没有太多考虑来制定你的问题。 – 2009-07-14 12:12:35

+1

此外,请参阅http://stackoverflow.com/questions/1110409/how-can-i-programmatically-convert-word-doc-or-docx-files-into-text-files/1110626#1110626如果您在Windows并且可以使用`Win32 :: OLE`并且你想要的只是文档中的文本。 – 2009-07-14 14:12:39

+0

正在使用Windows,我想提取在 中找到的缩写,即word文档....这是我的任务... – User1611 2009-07-16 06:21:12

回答

0

在Windows上,您最好使用COM接口来访问Word功能。

如果你想跨平台考虑执行“catdoc”或libwv。

1

如果脚本要在安装了Word的Windows盒子上运行,则可以使用Win32 :: OLE。

您使用的是哪个平台?也许antiword可能被调用?

0

Word文档不再是平面文件。找到一个.docx文件,用.zip扩展名重新命名它,然后你可以打开它并在里面查找,以了解事物的布局。我一般会同意,微软已经提供了这样做的方法。

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"; 
} 

here

相关问题