Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re^12: Deleting entire column in an excel

by harishnv (Sexton)
on Mar 11, 2018 at 13:55 UTC ( [id://1210659]=note: print w/replies, xml ) Need Help??


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

keyword is output. in my output xls file there will be only one column. The input file which i have told is an example. My xls file has more than 5 columns. Since i can't attach my file i gave this example.

  • Comment on Re^12: Deleting entire column in an excel

Replies are listed 'Best First'.
Re^13: Deleting entire column in an excel
by poj (Abbot) on Mar 11, 2018 at 15:47 UTC

    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

      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

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1210659]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others about the Monastery: (4)
As of 2024-04-19 02:56 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found