-
- use OpenOffice::OODoc;
- my $tmpdir = dirname $ods_filepath;
- odfWorkingDirectory( $tmpdir );
- my $container = odfContainer( $ods_filepath, create => 'spreadsheet' );
- my $doc = odfDocument (
- container => $container,
- part => 'content'
- );
- my $table = $doc->getTable(0);
- my @headers = header_cell_values( $sth );
- my $rows = $sth->fetchall_arrayref();
- 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;
- for my $header ( @headers ) {
- $doc->cellValue( $row, $j, $header );
- $j++;
- }
- my $i = 1;
- for ( @$rows ) {
- $row = $doc->getRow( $table, $i );
- for ( my $j = 0 ; $j < $nb_cols ; $j++ ) {
- my $value = Encode::encode( 'UTF8', $rows->[$i - 1][$j] );
- $doc->cellValue( $row, $j, $value );
+ my $ods_content;
+
+ # First line is headers
+ my @headers = header_cell_values($sth);
+ push @$ods_content, \@headers;
+
+ # Other line in Unicode
+ my $sql_rows = $sth->fetchall_arrayref();
+ foreach my $sql_row ( @$sql_rows ) {
+ my @content_row;
+ foreach my $sql_cell ( @$sql_row ) {
+ push @content_row, Encode::encode( 'UTF8', $sql_cell );