Bug 27569: Fix ODS export - take empty string into account

If a cell contains an empty string it was not taken into account.

Test plan:
Same as CSV but with ODS

Signed-off-by: Ron Houk <rhouk@ottumwapubliclibrary.org>

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
(cherry picked from commit 93bc3af5a9)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
(cherry picked from commit 5dfc3942f6)

Signed-off-by: Andrew Fuerste-Henry <andrew@bywatersolutions.com>
(cherry picked from commit 7094c56ca6)
Signed-off-by: Victor Grousset/tuxayo <victor@tuxayo.net>
This commit is contained in:
Jonathan Druart 2021-02-01 15:57:24 +01:00 committed by Victor Grousset/tuxayo
parent 8b5898b7b3
commit 5bc7e65a04
1 changed files with 4 additions and 1 deletions

View File

@ -907,6 +907,8 @@ sub _processRows_Table
my ($dataFields, $dataFieldsR) = _getDataFields($frameworkcode, $nodeR, \@fields, $format);
if (scalar(@fields) == scalar(@$dataFieldsR)) {
$ok = _processRow_DB($dbh, $table, $fields, $dataStr, $updateStr, $dataFieldsR, $dataFields, $PKArray, \@fieldsPK, $fields2Delete);
} else {
warn "$j don't match number of fields " . scalar(@fields) . ' vs ' . scalar(@$dataFieldsR) . "($dataStr)";
}
}
$j++;
@ -1079,7 +1081,7 @@ sub _getDataFields
if ($format && $format eq 'ods') {
($data, $repeated) = _getDataNodeODS($node2) if ($repeated <= 0);
$repeated--;
$ok = 1 if (defined($data));
$ok = 1;
} else {
if ($node2->nodeType == 1 && $node2->nodeName =~ /(?:ss:)?Cell/) {
my @nodes3 = $node2->getElementsByTagNameNS('urn:schemas-microsoft-com:office:spreadsheet', 'Data');
@ -1090,6 +1092,7 @@ sub _getDataFields
}
}
if ($ok) {
$data //= '';
$data = '' if ($data eq '#');
$data = $frameworkcode if ($fields->[$i] eq 'frameworkcode');
$dataFields->{$fields->[$i]} = $data;