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()
。