如何使用Perl在Word文档中提取数据?
答
在Windows上,您最好使用COM接口来访问Word功能。
如果你想跨平台考虑执行“catdoc”或libwv。
答
Word文档不再是平面文件。找到一个.docx文件,用.zip扩展名重新命名它,然后你可以打开它并在里面查找,以了解事物的布局。我一般会同意,微软已经提供了这样做的方法。
答
如果你不在Windows上,我认为最好的路线可能是先转换它。
如果您不使用Windows并且无法访问Win32::OLE,则可以使用OpenOffice to convert the documents。
您可以将链接中的脚本包装到您的Perl程序中。虽然链接以PDF开头,但如果您阅读,则可以将其转换为文本。另请参阅this * post about converting doc and docx files。
答
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
**你要提取什么**特定数据被盗?在什么平台上?你有没有安装Word的副本?这是一个批处理作业,还是脚本将被Web服务器调用?你的问题的标题和正文是相同的,这表明你没有太多考虑来制定你的问题。 – 2009-07-14 12:12:35
此外,请参阅http://*.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
正在使用Windows,我想提取在 中找到的缩写,即word文档....这是我的任务... – User1611 2009-07-16 06:21:12