我遵循简化的脚本(我无法更改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
所以我假设保存路径是正确的。但它不会创建一个文件。如果我添加$workbook->Close();
,至少要求关闭工作簿。但这就是全部。
$workbook->SaveAs("HelloWorld.xls");
将我的工作簿保存到" MyDocuments \ HelloWorld.xls"正确的内容。
如何将这个xls写入我的cwd()目录,就像写入我的文档一样?
(环境:Windows 7 64位,Perl:(v5.16.1)为MSWin32-x64多线程构建)
答案 0 :(得分:3)
由于这是在Windows上运行,因此您需要在$saveTo
中用反斜杠替换斜杠。添加像
$saveTo =~ s/\//\\/g;
在致电$workbook->SaveAs()
之前。