#!/usr/bin/perl use strict; use warnings; use Spreadsheet::ParseExcel; use Spreadsheet::WriteExcel; my $parser = Spreadsheet::ParseExcel->new(); my $workbook = $parser->parse('Project_status_tracking_DFT.xls'); if ( !defined $workbook ) { die $parser->error(), ".\n"; } my $workbook1 = Spreadsheet::WriteExcel->new('Ration_Status_ksh.xls'); my @color = qw(white green orange pink blue magenta silver); my @format; $format[0] = $workbook1->add_format(); $format[0]->set_text_wrap(); for my $i (1..@color){ $format[$i] = $workbook1->add_format(bg_color => $color[$i]); $format[$i]->set_text_wrap(); } for my $worksheet ( $workbook->worksheets() ) { my $worksheet1 = $workbook1->add_worksheet(); my ( $row_min, $row_max ) = $worksheet->row_range(); my ( $col_min, $col_max ) = $worksheet->col_range(); my $col_widths = $worksheet->get_col_widths(); my $flag = 0; for my $row ( $row_min .. $row_max ) { my $fmt = $format[0]; # default format for complete row # store row in array my @value = (); for my $col ( $col_min .. $col_max ) { # set column width same as source $worksheet1->set_column($col, $col, $col_widths->[$col]) if ($row == $row_min); my $cell = $worksheet->get_cell( $row, $col ); if (defined $cell) { my $value = $cell->value(); $value[$col] = $value; if ($value =~ /DFT Tasks for Ration/){ $flag = 1; } elsif ($value =~ /END OF RATION/){ $flag = 2; }; if ($value =~ m/Completed/i){ $fmt = $format[1] } } } # write row if ($flag){ for my $col ( $col_min .. $col_max ) { $worksheet1->write($row, $col, $value[$col],$fmt); } $flag = 0 if $flag == 2; } } }