use strict; use warnings; use Win32::OLE; my $fildir = "./"; opendir DIR, $fildir; my @files = grep { /.xls/ } readdir(DIR); closedir DIR; foreach my $files (@files) { chomp $files; my $pathfile = Win32::GetFullPathName($files); my $adbspath = $pathfile; $adbspath =~ s/\\/\\\\/g; my $Excel=Win32::OLE->new('Excel.Application'); $Excel->{Visible}=0; $Excel->{DisplayAlerts}=0; my $Book = $Excel->Workbooks->Open("$adbspath") or die "Can't open file"; my $sheet = $Book -> Worksheets(1); $sheet -> Range ('A:A') -> {NumberFormat} = "000"; my $nmlng = length $pathfile; my $till = rindex ($pathfile,".xls",$nmlng); my $nwnam = substr ($pathfile,0,$till); # remove spaces from file name to facilitate saveas filename $nwnam =~ s/ //g; my $qnwnam = "\"".$nwnam.".csv\""; print "$qnwnam \n"; $Book->SaveAs({Filename => "$nwnam.csv", FileFormat => 6, #xlCSV, CreateBackup => 0}); # unlink ($files); $Excel->Quit; }