From: Don Armstrong Date: Tue, 6 Mar 2012 22:13:29 +0000 (+0000) Subject: handle multiple worksheets and rmode X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=70934fed42a8f4cc4e829adc1183f4b4e309c417;p=bin.git handle multiple worksheets and rmode --- diff --git a/txt2xls b/txt2xls index 97dc8de..3ede2f4 100755 --- a/txt2xls +++ b/txt2xls @@ -127,15 +127,32 @@ for my $file (@ARGV) { my $ws = $wb->add_worksheet($ws_name) or die "Unable to add worksheet to workbook"; my $row = 1; + my @header_row; + my $overflow = 0; while (<$fh>) { chomp; # parse the line my @row; die "Unable to parse line $. of $file" unless $csv->parse($_); - if ($row==1) { + if ($row==1 and $options{rmode}) { + # R doesn't output headers for rownames push @row,''; } + if ($row > 65536) { # ok, we're going to overflow here + my $t_ws_name = $ws_name; + my $maxlen = 31-length('.'.$overflow); + $t_ws_name =~ s{^(.{0,$maxlen}).*$}{$1}; + $ws = $wb->add_worksheet($ws_name.'.'.$overflow); + $row=1; + for my $i (0..@header_row) { + $ws->write($columns[$i].$row,$header_row[$i]); + } + $row++; + } push @row,$csv->fields(); + if ($row==1) { + @header_row = @row; + } for my $i (0..$#row) { $ws->write($columns[$i].$row,$row[$i]); }