diff options
-rw-r--r-- | lib/Spreadsheet/ParseXLSX.pm | 11 | ||||
-rw-r--r-- | t/bug-4.t | 22 | ||||
-rw-r--r-- | t/data/bug-4.xlsx | bin | 0 -> 7497 bytes |
3 files changed, 29 insertions, 4 deletions
diff --git a/lib/Spreadsheet/ParseXLSX.pm b/lib/Spreadsheet/ParseXLSX.pm index 6d2f232..fa26e42 100644 --- a/lib/Spreadsheet/ParseXLSX.pm +++ b/lib/Spreadsheet/ParseXLSX.pm @@ -574,11 +574,14 @@ sub _cell_to_row_col { my ($cell) = @_; my ($col, $row) = $cell =~ /([A-Z]+)([0-9]+)/; - $col =~ tr/A-Z/0-9A-P/; - $col = POSIX::strtol($col, 26); - $row = $row - 1; - return ($row, $col); + (my $ncol = $col) =~ tr/A-Z/1-9A-Q/; + $ncol = POSIX::strtol($ncol, 27); + $ncol -= 1; + + my $nrow = $row - 1; + + return ($nrow, $ncol); } sub _color { diff --git a/t/bug-4.t b/t/bug-4.t new file mode 100644 index 0000000..e135d30 --- /dev/null +++ b/t/bug-4.t @@ -0,0 +1,22 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; + +use Spreadsheet::ParseXLSX; + +my $parser = Spreadsheet::ParseXLSX->new; +my $wb = $parser->parse('t/data/bug-4.xlsx'); +my $ws = $wb->worksheet(0); + +{ + my $cell = $ws->get_cell(0, 0); + is($cell->value,'Order Number', 'cell check 1'); +} + +{ + my $cell = $ws->get_cell(1, 0); + is($cell->value,'364968', 'cell check 2'); +} + +done_testing; diff --git a/t/data/bug-4.xlsx b/t/data/bug-4.xlsx Binary files differnew file mode 100644 index 0000000..cdd51c5 --- /dev/null +++ b/t/data/bug-4.xlsx |