# Open the output file for the cmdtxt audit trail selected open TXT,">$txt" or die "Can't create $txt : $!\n"; # execute the sql statement $sth=$dbh->prepare("@sql"); $sth->execute; while ($data = $sth->fetchrow_arrayref()) { chomp $data->[13]; $data->[13] =~ tr/\t//; # get rid of the tabs if ( $data->[4] > 1) { print TXT "$data->[13]"; } else { print TXT "\nBOR $data->[3]|$data->[2]|$data->[9]|$data->[10]|$data->[4]|$data->[13]"; } } $sth->finish; $dbh->disconnect; close TXT; # Create the spreadsheet and set up formats $workbook = Spreadsheet::WriteExcel->new("my.xls"); # Set up various workbook formats here.... # Create some worksheets $sheet1 = $workbook->add_worksheet('Tools'); $sheet2 = $workbook->add_worksheet('Client'); $sheet3 = $workbook->add_worksheet('Fares'); # create some column headings for each worksheet here... # Set up some lookup lists using Regexp::List here... # Read the intermediate file and populate the worksheets $/="BOR "; open TXT,"<$txt" or die "Can't open $txt : $!\n"; while( ) { chomp; if( m[/\-] ) { $_ .= until m[\-/]; s[ \s? / \- .+? \- / \s? ][]smgx;# cut out some unwanted txt chomp; } my @rec = split /\|/; $aa = $rec[0]; $bb = $rec[1]; $cc = $rec[2]; $dd = $rec[3]; # $rec[4] isn't used here $ee = $rec[5]; if ($ee =~ /$regexp1/) { popxls($sheet1,$normal,$darow); # populate worksheet 1 $darow++; } elsif ($ee =~ /$regexp2/) { popxls($sheet2,$normal,$arow); # populate worksheet 2 $arow++; } elsif ($ee =~ /$regexp3/) { popxls($sheet3,$normal,$srow); # populate worksheet3 $srow++; } } close TXT; sub popxls { $col = 0; my $type = $_[0]; my $fmt = $_[1]; my $row = $_[2]; $type->write($row, $col, "$ee", $fmt); $col++; $cmdtype->write($row, $col, $aa, $fmt); $col++; $cmdtype->write($row, $col, "$bb", $fmt); $col++; $cmdtype->write($row, $col, "$cc", $fmt); $col++; $cmdtype->write($row, $col, "$dd", $fmt); }