http://www.perlmonks.org?node_id=498619


in reply to Accessing Worksheet name in excel

Not sure why you're showing two different code samples. Is it that the latter one works?

In the first code sample:

Try making sure you are indeed opening the file. "Can't call method Worksheets on an undefine value" suggests you haven't opened it. Uncomment the "die on errors" line. And/or check the return code:

my $Book = $Excel->Workbooks->Open("Reten_template.xls") || die "can't + open file";
Then try displaying all the sheets to make sure you have the right name:
for (1..$Book->Worksheets->Count) { print "$_: <", $Book->Worksheets($_)->Name, ">\n"; }

By the way, here's a good way to make sure you have the full path of the file name:

# open Excel file use File::Spec; my $file = File::Spec->rel2abs("Reten_template.xls"); my $Book = $Excel->Workbooks->Open($file) or die "can't open $file: $! +\n";
If you manage to open the Excel file, and you have the right name, then this should work:
my $Sheet = $Book->Worksheets('JUN05');