diff options
-rw-r--r-- | lib/Spreadsheet/ParseXLSX.pm | 2 | ||||
-rw-r--r-- | t/bug-lock.t | 26 | ||||
-rw-r--r-- | t/data/bug-lock.xlsx | bin | 0 -> 8480 bytes |
3 files changed, 27 insertions, 1 deletions
diff --git a/lib/Spreadsheet/ParseXLSX.pm b/lib/Spreadsheet/ParseXLSX.pm index 77e83e7..d20d734 100644 --- a/lib/Spreadsheet/ParseXLSX.pm +++ b/lib/Spreadsheet/ParseXLSX.pm @@ -513,7 +513,7 @@ sub _parse_styles { Font => $font[$_->att('fontId')], FmtIdx => 0+$_->att('numFmtId'), - Lock => $protection + Lock => $protection && defined $protection->att('locked') ? $protection->att('locked') : 1, Hidden => $protection diff --git a/t/bug-lock.t b/t/bug-lock.t new file mode 100644 index 0000000..142d003 --- /dev/null +++ b/t/bug-lock.t @@ -0,0 +1,26 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; + +use Spreadsheet::ParseXLSX; + +my $wb = Spreadsheet::ParseXLSX->new->parse('t/data/bug-lock.xlsx'); +my $ws = $wb->worksheet(0); + +my $b1 = $ws->get_cell(0, 0); +ok($b1->get_format->{Lock}); + +my $b2 = $ws->get_cell(1, 0); +ok(!$b2->get_format->{Lock}); + +my $b3 = $ws->get_cell(2, 0); +ok($b3->get_format->{Lock}); + +my $b4 = $ws->get_cell(3, 0); +ok(!$b4->get_format->{Lock}); + +my $b5 = $ws->get_cell(4, 0); +ok($b5->get_format->{Lock}); + +done_testing; diff --git a/t/data/bug-lock.xlsx b/t/data/bug-lock.xlsx Binary files differnew file mode 100644 index 0000000..bf16fdb --- /dev/null +++ b/t/data/bug-lock.xlsx |