in reply to Re^12: Deleting entire column in an excel
in thread Deleting entire column in an excel

Assuming the keyword might appear in more than one column and anywhere in the row try this

#!/usr/bin/perl use strict; use Spreadsheet::ParseExcel; use Spreadsheet::WriteExcel; my $KEYWORD = 'output'; my $parser = Spreadsheet::ParseExcel->new(); my $workbook = $parser->parse('formatting.xls'); if ( !defined $workbook ) { die $parser->error(), ".\n"; } my $workbook1 = Spreadsheet::WriteExcel->new("perl.xls"); foreach my $worksheet ( $workbook->worksheets() ) { my $name = $worksheet->get_name(); # create worksheet with same name my $worksheet1 = $workbook1->addworksheet($name); my ( $row_min, $row_max ) = $worksheet->row_range(); my ( $col_min, $col_max ) = $worksheet->col_range(); next unless ($row_max >= 0 && $col_max >= 0); # skip blank sheets print " PARSING WORKSHEET: $name ROW_MIN = $row_min, ROW_MAX = $row_max; COL_MIN = $col_min, COL_MAX = $col_max "; my $copyflag; my $col1 = 0; for my $col ( $col_min .. $col_max ) { $copyflag = 1; my @rowval = (); for my $row ( $row_min .. $row_max ) { my $cell = $worksheet->get_cell( $row, $col ); next unless defined $cell; my $val = $cell->value(); print "Col, Row, Value = ($col, $row, $val)\n"; $rowval[$row - $row_min] = $val; if ($val =~ /$KEYWORD/i){ print "$KEYWORD found in column $col\n"; $copyflag = 0; } } # copy to new sheet next if ($copyflag == 0); for my $row1 (0..$#rowval){ $worksheet1->write($row1, $col1, $rowval[$row1]); } ++$col1; } }
poj

Replies are listed 'Best First'.
Re^14: Deleting entire column in an excel
by harishnv (Sexton) on Mar 11, 2018 at 16:04 UTC

    in each sheet the keyword name comes in top of the column ie the first element in every column and appears only once in each sheet