in reply to Re^4: Delete entire row without using Win32::OLE
in thread Delete entire row without using Win32::OLE
How simple is your spreadsheet ? Does it have merged cells, borders, colors, formulae, graphics, etc ?. If it doesn't try this program which should create a copy.Then either adapt it for your update or explain some more the problem you have.
poj#!perl use strict; use Spreadsheet::ParseXLSX; use Excel::Writer::XLSX; use Data::Dump 'pp'; my $file = 'c://temp//Book1'; my @data=(); read_file($file.'.xlsx'); #pp \@data; write_file($file.'_copied.xlsx'); sub read_file { my $file = shift; print "Reading $file\n"; my $parser = Spreadsheet::ParseXLSX->new(); my $wb1 = $parser->parse($file); if ( !defined $wb1 ) { die $parser->error(), ".\n"; } for my $n ( 1 .. $wb1->worksheet_count() ) { my $ws = $wb1->worksheet($n-1); my ( $row_min, $row_max ) = $ws->row_range(); my ( $col_min, $col_max ) = $ws->col_range(); my @tmp = (); for my $row ( $row_min .. $row_max ) { for my $col ( $col_min .. $col_max ) { my $cell = $ws->get_cell( $row, $col ); next unless $cell; push @tmp,join "\t",$row,$col,$cell->value(); } } my $name = $ws->get_name; print "Reading sheet $n $name\n"; push @data,[$name,\@tmp]; } } sub write_file { my $file = shift; print "Creating copy workbook $file\n"; my $wb2 = Excel::Writer::XLSX->new( $file ); for my $n (1..@data){ my $name = $data[$n-1][0]; my $ar = $data[$n-1][1]; print "Adding sheet $n $name\n"; my $ws = $wb2->add_worksheet($name); for (@$ar){ my ($row,$col,$value) = split "\t",$_; $ws->write( $row, $col, $value ); } } $wb2->close(); }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^6: Delete entire row without using Win32::OLE
by ravi45722 (Pilgrim) on Sep 03, 2015 at 05:04 UTC | |
by poj (Abbot) on Sep 03, 2015 at 12:48 UTC | |
by ravi45722 (Pilgrim) on Sep 04, 2015 at 04:07 UTC | |
by afoken (Chancellor) on Sep 04, 2015 at 06:37 UTC | |
by ravi45722 (Pilgrim) on Sep 04, 2015 at 07:13 UTC | |
by poj (Abbot) on Sep 04, 2015 at 06:16 UTC | |
by ravi45722 (Pilgrim) on Sep 04, 2015 at 07:08 UTC |