Perl - 无法使用Win32 :: OLE打开文件

时间:2016-11-17 14:40:19

标签: perl

我正在尝试使用以下代码打开.docx文件:

require Win32::OLE;
my $docfile = "C:/Users/me/Documents/file.docx";
my $Word = Win32::OLE->GetActiveObject('Word.Application');
unless ($Word) { $Word = Win32::OLE->new('Word.Application', sub {$_[0]->Quit;}) or die "oops\n"; }
$Word->{visible} = 1;
my $File = $Word->Documents->Open($docfile);
$File->PrintOut();
$File->Close(); 
$Word->Quit();

但我收到以下错误:

  

“Microsoft Word”中的OLE异常:

     

抱歉,我们找不到您的文件。有可能它被移动了,   重命名还是删除? (C://用户/我/文档/ ...)

我该如何解决这个问题?为什么它添加//到我的路径? (不用说,文件确实存在于系统中,这是正确的路径)。

谢谢!

1 个答案:

答案 0 :(得分:0)

我建议您使用canonpath中的File::Spec::Function来规范化文件路径并将路径分隔符更改为反斜杠

喜欢这个

use strict;
use warnings 'all';

use Win32::OLE;
use File::Spec::Functions 'canonpath';

my $docfile = "C:/Users/me/Documents/file.docx";
my $word    = Win32::OLE->GetActiveObject('Word.Application') or die;

$word->{visible} = 1;

my $file = $word->Documents->Open(canonpath($docfile)) or die;
$file->PrintOut;
$file->Close; 

$word->Quit;