From: Emmanuel Lacour Date: Wed, 12 Mar 2014 16:43:16 +0000 (+0100) Subject: Apply back XLS patch X-Git-Tag: 0.08~6 X-Git-Url: http://git.home-dn.net/?p=manu%2FRT-Extension-SearchResults-XLS.git;a=commitdiff_plain;h=566ebe31b8cff8d708e1049eec82ac1797b56859 Apply back XLS patch --- diff --git a/html/Search/Results.xls b/html/Search/Results.xls index 123392a..8074692 100644 --- a/html/Search/Results.xls +++ b/html/Search/Results.xls @@ -58,6 +58,14 @@ my $no_html = HTML::Scrubber->new( deny => '*' ); <%INIT> require HTML::Entities; +use Spreadsheet::WriteExcel; +my $xls; +my $fh; +open ($fh, ">", \$xls) or die "$!"; +my $workbook = Spreadsheet::WriteExcel->new($fh) or die $!; +my $worksheet = $workbook->add_worksheet(); + + $r->content_type('application/vnd.ms-excel'); my $DisplayFormat = $m->comp('/Elements/ScrubHTML', Content => $Format); @@ -103,8 +111,12 @@ else { : () } @Format]; } +my $ws_col = 0; for (@columns) { - $m->out(join("\t", map { $_->{header} } @$_)."\n"); + foreach my $ws_val (map { $_->{header} } @$_) { + $worksheet->write_string(0, $ws_col, $ws_val); + $ws_col++; + } } my $Tickets = RT::Tickets->new( $session{'CurrentUser'} ); @@ -122,10 +134,12 @@ else { $Tickets->OrderBy( FIELD => $OrderBy, ORDER => $Order ); } +my $ws_row = 1; my $ii = 0; while (my $row = $Tickets->Next) { + $ws_col = 0; for my $col (@columns) { - $m->out(join("\t", map { + for (@$col) { my $val = ProcessColumnMapValue($_->{map}, Arguments => [$row, $ii++], Escape => 0); $val = loc($val) if $_->{should_loc}; # remove tabs from all field values, they screw up the tsv @@ -134,9 +148,16 @@ while (my $row = $Tickets->Next) { $val = $no_html->scrub($val); $val = HTML::Entities::decode_entities($val); Encode::encode_utf8($val); - } @$col)."\n"); + $worksheet->write_string($ws_row, $ws_col, $val); + $ws_col++; + } } + $ws_row++; } + +$workbook->close; +close($fh); +$m->print($xls); $m->abort();