use strict; use warnings; use OLE; use Win32::OLE::Const "Microsoft Excel"; my $MY_EXCEL="E:\\readexcel.xlsx"; my $excel = CreateObject OLE "Excel.Application"; my $workbook = $excel -> Workbooks -> Open("$MY_EXCEL"); my $Sheet -> Range ("A1") -> {Value}; print "S H E E T : $Sheet\n"; $excel-> Quit; #### Useless use of hash element in void context at E:\readexcel.pl line 8. Can't call method "Range" on an undefined value at E:\readexcel.pl line 8. #### use strict; use Win32::OLE qw(in with); use Win32::OLE::Const 'Microsoft Excel'; $Win32::OLE::Warn = 3; my $Excel = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit'); my $Book = $Excel->Workbooks->Open("E:\\readexcel.xlsx"); my $Sheet = $Book->Worksheets(1); my $array = $Sheet->Range("A1:C3")->{'Value'}; $Book->Close; foreach my $ref_array (@$array) { foreach my $scalar (@$ref_array) { print "$scalar\t"; } print "\n"; }