use strict; use warnings; use Win32::OLE qw(in with); use Win32::OLE::Const 'Microsoft Excel'; $Win32::OLE::Warn = 3; # die on errors... # get already active Excel application or open new my $Excel = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit'); # open Excel file my $Book = $Excel->Workbooks->Open("E:/OLE2.xls"); my $Sheet = $Book->Worksheets(1); foreach my $row (1..300) { foreach my $col (1..300) { # skip empty cells next unless defined $Sheet->Cells($row,$col)->{'Value'}; if ($Sheet->Cells($row,$col)->{'Value'}=~/0000/){ print $Sheet->Cells($row,$col)->{'Value'}; } } } # clean up after ourselves $Book->Close;