Bug 12622: Fix export report as ods
Bug 11679 introduces an ods export for reports. It looks quite buggy: 1/ You get a Perl error if the report has no results 2/ The ods file contains 1 lines less than the total results. Test plan: After applying this patch, try to export a report which has no results and verify you get an ods file with headers only. Try to export a report which has a least 1 result and verify the generated ods has the right number of lines. Signed-off-by: Robert Higgins <robert.higgins@catalyst.net.nz> Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de> Fixes the reported problem, passes all tests and QA script. Added the sign-off line for Robert. Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
This commit is contained in:
parent
9c138fbfb1
commit
0e936ce220
1 changed files with 7 additions and 4 deletions
|
@ -814,8 +814,10 @@ elsif ($phase eq 'Export'){
|
|||
my $table = $doc->getTable(0);
|
||||
my @headers = header_cell_values( $sth );
|
||||
my $rows = $sth->fetchall_arrayref();
|
||||
my ( $nb_rows, $nb_cols ) = ( scalar(@$rows), scalar(@{$rows->[0]}) );
|
||||
$doc->expandTable( $table, $nb_rows, $nb_cols );
|
||||
my ( $nb_rows, $nb_cols ) = ( 0, 0 );
|
||||
$nb_rows = @$rows;
|
||||
$nb_cols = @headers;
|
||||
$doc->expandTable( $table, $nb_rows + 1, $nb_cols );
|
||||
|
||||
my $row = $doc->getRow( $table, 0 );
|
||||
my $j = 0;
|
||||
|
@ -823,13 +825,14 @@ elsif ($phase eq 'Export'){
|
|||
$doc->cellValue( $row, $j, $header );
|
||||
$j++;
|
||||
}
|
||||
for ( my $i = 1; $i < $nb_rows +1 ; $i++ ) {
|
||||
my $i = 1;
|
||||
for ( @$rows ) {
|
||||
$row = $doc->getRow( $table, $i );
|
||||
for ( my $j = 0 ; $j < $nb_cols ; $j++ ) {
|
||||
# FIXME Bug 11944
|
||||
my $value = Encode::encode( 'UTF8', $rows->[$i - 1][$j] );
|
||||
$doc->cellValue( $row, $j, $value );
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
$doc->save();
|
||||
binmode(STDOUT);
|
||||
|
|
Loading…
Reference in a new issue