【问题标题】:How can I extract data in a Word document using Perl?如何使用 Perl 提取 Word 文档中的数据?
【发布时间】:2010-11-10 14:44:15
【问题描述】:

如何使用 Perl 从 word doc 中提取数据?

【问题讨论】:

  • 您要提取什么特定数据?在什么平台上?您是否安装了 Word 的副本?这是一个批处理作业,还是将由 Web 服务器调用该脚本?您的问题的标题和正文相同,表明您在提出问题时没有考虑太多。
  • 另外,如果您在 Windows 上并且可以使用 Win32::OLE 并且您想要的只是文档中的文本,请参阅 stackoverflow.com/questions/1110409/…
  • 我正在使用 Windows,我想提取在该 Word 文档中找到的缩写词……这就是我的任务……
  • 你能给我一个简单的例子,阅读一个word文档并在命令提示符下打印数据...

标签: perl ms-word


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    您使用的是什么平台?或许可以调用antiword

    【讨论】:

      【解决方案3】:

      Word 文档不再是平面文件。找到一个 .docx,用 .zip 扩展名重命名它,然后您可以打开它并在里面四处寻找,以了解事物的布局。尽管微软已经提供了执行此操作的方法,但我通常会同意。

      【讨论】:

        【解决方案4】:

        如果您不在 Windows 上,我认为最好的方法可能是先转换它。

        如果您没有使用 Windows 并且无权访问 Win32::OLE,则可以使用 OpenOffice to convert the documents

        您可以将链接中的脚本封装到您的 Perl 程序中。虽然链接以 PDF 开头,但如果您阅读它可以将其转换为文本。另见this stackoverflow post about converting doc and docx files

        【讨论】:

        • 你能给我一个简单的例子来阅读一个word文档并在命令提示符下打印它的数据吗...
        【解决方案5】:
        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

        【讨论】:

          猜你喜欢
          • 2013-06-20
          • 2013-12-01
          • 1970-01-01
          • 2010-09-26
          • 2011-10-08
          • 1970-01-01
          • 1970-01-01
          • 2010-11-12
          • 1970-01-01
          相关资源
          最近更新 更多