summaryrefslogtreecommitdiffstats
path: root/lib/Spreadsheet/ParseXLSX.pm
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2013-09-16 23:35:00 -0400
committerJesse Luehrs <doy@tozt.net>2013-09-16 23:35:00 -0400
commit90ca90b8e8f2dafc2befb8c5ddba1eea8e4eebf3 (patch)
treefc893aaaaf3fdca335ae99ee5cdcf84b693310d0 /lib/Spreadsheet/ParseXLSX.pm
parent184bd929cdd7059c5387c2e753ab63731020d537 (diff)
downloadspreadsheet-parsexlsx-90ca90b8e8f2dafc2befb8c5ddba1eea8e4eebf3.tar.gz
spreadsheet-parsexlsx-90ca90b8e8f2dafc2befb8c5ddba1eea8e4eebf3.zip
fix row and column range for empty sheets (fixes #8)
Diffstat (limited to 'lib/Spreadsheet/ParseXLSX.pm')
-rw-r--r--lib/Spreadsheet/ParseXLSX.pm30
1 files changed, 20 insertions, 10 deletions
diff --git a/lib/Spreadsheet/ParseXLSX.pm b/lib/Spreadsheet/ParseXLSX.pm
index a7db72b..0dca08a 100644
--- a/lib/Spreadsheet/ParseXLSX.pm
+++ b/lib/Spreadsheet/ParseXLSX.pm
@@ -126,18 +126,28 @@ sub _parse_sheet {
my $self = shift;
my ($sheet, $sheet_xml) = @_;
- # XXX need a fallback here, the dimension tag is optional
- my ($dimension) = $sheet_xml->find_nodes('//dimension');
- my ($rmin, $cmin, $rmax, $cmax) = $self->_dimensions(
- $dimension->att('ref')
- );
+ my @cells = $sheet_xml->find_nodes('//sheetData/row/c');
+
+ if (@cells) {
+ # XXX need a fallback here, the dimension tag is optional
+ my ($dimension) = $sheet_xml->find_nodes('//dimension');
+ my ($rmin, $cmin, $rmax, $cmax) = $self->_dimensions(
+ $dimension->att('ref')
+ );
- $sheet->{MinRow} = $rmin;
- $sheet->{MinCol} = $cmin;
- $sheet->{MaxRow} = $rmax;
- $sheet->{MaxCol} = $cmax;
+ $sheet->{MinRow} = $rmin;
+ $sheet->{MinCol} = $cmin;
+ $sheet->{MaxRow} = $rmax;
+ $sheet->{MaxCol} = $cmax;
+ }
+ else {
+ $sheet->{MinRow} = 0;
+ $sheet->{MinCol} = 0;
+ $sheet->{MaxRow} = -1;
+ $sheet->{MaxCol} = -1;
+ }
- for my $cell ($sheet_xml->find_nodes('//sheetData/row/c')) {
+ for my $cell (@cells) {
my ($row, $col) = $self->_cell_to_row_col($cell->att('r'));
my $val = $cell->first_child('v')
? $cell->first_child('v')->text