perl:用Win32 :: OLE保存工作簿是不可能的

我已经简化了脚本(我不能改变Win32:OLE)

use warnings; use strict; use Cwd; use Win32::OLE; use Win32::OLE::Const 'Microsoft Excel'; my $excel = Win32::OLE->new('Excel.Application'); my $workbook = $excel->Workbooks->Add; my $worksheet = $workbook->Worksheets(1); $worksheet->Range("B1")->{Value} ="Hello"; $worksheet->Range("C2")->{Value} ="World"; # Get current directory using Cwd.pm my $saveTo = cwd(); $saveTo = $saveTo . '/HelloWorld.xls'; print "$saveTo\n"; $workbook->SaveAs($saveTo); undef $workbook; 

它会产生以下输出:

 D:/workspace/perl/HW_XLS/HelloWorld.xls 

所以我假设保存path是正确的。 但它不会创build一个文件。 如果我添加$workbook->Close(); 至less要求closures工作簿。 但是这是全部。

$workbook->SaveAs("HelloWorld.xls"); 使用正确的内容将我的工作簿保存到“MyDocuments \ HelloWorld.xls”。

如何得到这个xls写入我的cwd()目录,就像写入我的文档?

(环境:Windows 7 64位,Perl:(v5.16.1)为MSWin32-x64-multi-thread构build)

由于这是在Windows上运行的,所以你需要用$saveTo反斜杠replace斜线。 添加一个像

 $saveTo =~ s/\//\\/g; 

之前调用$workbook->SaveAs()