1
我下面的簡化腳本(我不能改變的Win32:OLE)的Perl:保存工作簿中的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()目錄,就像寫入我的文檔一樣?
(環境:64位Windows 7,Perl的:(v5.16.1)爲MSWin32-x64的多線程構建)
你試過用$ saveTo中的反斜槓代替斜槓嗎?像$ saveTo =〜s/\ // \\/g;在SaveAs之前。由於這是在Windows上運行,因此可能需要這樣做。 –
這解決了我的問題,你可以發佈它作爲答案?所以我可以接受它。 – MemLeak