如何使用Perl从word doc中提取数据?
答案 0 :(得分:2)
如果您不在Windows上,我认为最好的方法可能是首先转换它。
如果您没有使用Windows且无法访问Win32::OLE,则可以使用OpenOffice to convert the documents。
您可以将链接中的脚本包装到Perl程序中。虽然链接以PDF开头,但如果您阅读它可以将其转换为文本。另请参阅this stackoverflow post about converting doc and docx files。
答案 1 :(得分:1)
如果脚本要在安装了Word的Windows机器上运行,则可以使用Win32 :: OLE。
您使用的是什么平台?也许可以调用antiword?
答案 2 :(得分: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
被盗答案 3 :(得分:0)
在Windows上,您最好使用COM接口来访问Word功能。
如果你想跨平台思考执行“catdoc”或libwv。
答案 4 :(得分:0)
Word文档不再是平面文件。找到一个.docx,用.zip扩展名重命名它,然后你可以打开它并在里面逛一逛来了解事情的布局。我普遍同意,虽然微软已经提供了这样做的方法。