From d89c1a7f87569f4029e5f26335d3dc8bcebd15da Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Wed, 31 Jul 2013 13:37:36 -0400 Subject: fix the row translation formula (fixes #4) --- lib/Spreadsheet/ParseXLSX.pm | 11 +++++++---- t/bug-4.t | 22 ++++++++++++++++++++++ t/data/bug-4.xlsx | Bin 0 -> 7497 bytes 3 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 t/bug-4.t create mode 100644 t/data/bug-4.xlsx 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 new file mode 100644 index 0000000..cdd51c5 Binary files /dev/null and b/t/data/bug-4.xlsx differ -- cgit v1.2.3-54-g00ecf