将 Word doc 或 docx 文件转换为文本文件?

问题描述:

我需要一种无需安装任何东西即可将 .doc.docx 扩展名转换为 .txt 的方法.我也不想手动打开 Word 来执行此操作.只要它在自动上运行.

I need a way to convert .doc or .docx extensions to .txt without installing anything. I also don't want to have to manually open Word to do this obviously. As long as it's running on auto.

我认为 Perl 或 VBA 都可以解决问题,但我在网上找不到任何相关内容.

I was thinking that either Perl or VBA could do the trick, but I can't find anything online for either.

有什么建议吗?

请注意,对象浏览器是 Microsoft Office 应用程序的绝佳信息来源.您可以通过ToolsMacroVisual Basic Editor 访问它.进入编辑器后,点击 F2 浏览 Microsoft Office 应用程序提供的接口、方法和属性.

Note that an excellent source of information for Microsoft Office applications is the Object Browser. You can access it via ToolsMacroVisual Basic Editor. Once you are in the editor, hit F2 to browse the interfaces, methods, and properties provided by Microsoft Office applications.

这是一个使用 Win32::OLE 的示例:

Here is an example using Win32::OLE:

#!/usr/bin/perl

use strict;
use warnings;

use File::Spec::Functions qw( catfile );

use Win32::OLE;
use Win32::OLE::Const 'Microsoft Word';
$Win32::OLE::Warn = 3;

my $word = get_word();
$word->{Visible} = 0;

my $doc = $word->{Documents}->Open(catfile $ENV{TEMP}, 'test.docx');

$doc->SaveAs(
    catfile($ENV{TEMP}, 'test.txt'),
    wdFormatTextLineBreaks
);

$doc->Close(0);

sub get_word {
    my $word;
    eval {
        $word = Win32::OLE->GetActiveObject('Word.Application');
    };

    die "$@
" if $@;

    unless(defined $word) {
        $word = Win32::OLE->new('Word.Application', sub { $_[0]->Quit })
            or die "Oops, cannot start Word: ",
                   Win32::OLE->LastError, "
";
    }
    return $word;
}
__END__