use Win32::OLE; use Win32::OLE::Const 'Microsoft Excel'; use vars qw($Excel); # use existing instance if Excel is already running eval { $Excel = Win32::OLE->GetActiveObject('Excel.Application'); }; if ($@) { die "Error: excel is not installed\n"; } # if unless (defined $Excel) { $Excel = Win32::OLE->new('Excel.Application', sub { $_[0]->Quit } ) or die "Error: can't start Excel\n"; } # unless my $workbook = $Excel->Workbooks->open($excelFile); my $sheet = $workbook->Worksheets(1); my $row = 100; $sheet->Range("A2:L$row") ->Sort( { Key1 => $sheet->Range('e2'), Key2 => $sheet->Range('c2'), Key3 => $sheet->Range('d2'), Order1 => xlAscending, Order2 => xlAscending, Order3 => xlAscending, } );