#!/usr/bin/perl -w use strict; use Spreadsheet::ParseExcel; use Spreadsheet::WriteExcel; use Text::Wrap; 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('Homested_Status.xls'); my @color = qw(white green orange pink blue magenta silver); #my @format; my $format1 = $workbook1->add_format(bg_color => 'green' ); #$format1->set_text_wrap(); $format1->set_align('vjustify'); #for my $i (1..@color){ # $format[$i] = $workbook1->add_format(bg_color => $color[$i]); # $format[$i]->set_align('vjustify'); #$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(); # set minimum column width my @width; $width[$_] = 10 for ($col_min .. $col_max); for my $row ( $row_min .. $row_max ) { my @value = (); # my @value_1 = (); # my @value_2 = (); my $fmt; # format for complete row # store row in array for my $col ( $col_min .. $col_max ) { #local $Text::Wrap::columns = 20; #$value = wrap ("", "", $source_cell->Value); my $cell = $worksheet->get_cell( $row, $col ); if (defined $cell) { local $Text::Wrap::columns = 60; #$Text::Wrap::separator="\n"; my $value = wrap("", "", $cell->value()); #$longdna_string =~ s/.{60}\K/\n/g; # my $value = $cell->value(); #$value =~ s/.{60}\K/\n/g; if ($value=~ /DFT Tasks for Homestead/ .. $value =~ /END OF HOMESTEAD/){ $value[$col] = $value; if ($value[$col] =~ m/Completed/i) { $fmt = $format1; } # determine max width for each column my $len = length($value[$col]); $width[$col] = $len if $len > $width[$col]; } } } # write row for my $col ( $col_min .. $col_max ) { $worksheet1->write($row, $col, $value[$col],$fmt); } } # set column widths for my $col ( $col_min .. $col_max ) { $worksheet1->set_column($col,$col,$width[$col]) } }