我正在努力解决这个问题并且发表了许多文章,说明它应该如何运作,但我没有成功:
我的系统是安装并激活了Office 2016的Windows 7。 我想使用Excel文件作为模板修改它并将其保存到新位置。这是我的代码:
sub ExcelWriter {
my $Template = "../templates/template.xls";
my $ExcelFile = $MyOutDir."New_Excel_File.xls";
my $Excel = new Win32::OLE('Excel.Application');
if (-f $Template) {
my $WorkBook = $Excel->Workbooks->Open($Template);
my $WorkSheet = $WorkBook->Worksheets('Overview');
$WorkSheet->Cells(5,3)->{Value} = $Customer;
$WorkBook->SaveAs($ExcelFile);
$WorkBook->Close();
undef $WorkBook;
undef $Excel;
}
}
我得到" Can't call method "Worksheets" on an undefined value at...
"
当我使用" Workbooks->Add
"和" Worksheets->Add
"要创建一个新的工作簿,我可以编写单元格。即使选择工作表也可以在这里工作!
对于专家来说,这似乎是显而易见的,但我一定在这里错过了一些东西。我已经从" .xlsx"保存了我的工作簿to" .xls"并删除所有公式等...甚至创建一个新的空白工作簿!
感谢您的帮助
此致 劳伦
答案 0 :(得分:0)
我将代码修改为(使用原始的“.xlsx”文件):
sub ExcelWriter {
my ($Volume, $Directory, $File) = File::Spec->splitpath(__FILE__);
my $Template = $Volume.$Directory.'..\templates\template.xlsx';
my $ExcelFile = $MyOutDir.'New_Excel_File.xlsx';
my $Excel = new Win32::OLE('Excel.Application');
my $WorkBook = $Excel->Workbooks->Open($Template);
my $WorkSheet = $WorkBook->Worksheets('Overview');
$WorkSheet->Cells(5,3)->{Value} = $Customer;
$WorkBook->SaveAs($ExcelFile);
$WorkBook->Close();
undef $WorkBook;
undef $Excel;
}
......它运作正常!