我正在尝试使用以下代码打开.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://用户/我/文档/ ...)
我该如何解决这个问题?为什么它添加//到我的路径? (不用说,文件确实存在于系统中,这是正确的路径)。
谢谢!
答案 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;