From 18d2af2335741cdf59cb0725669f7aa7a7fad98b Mon Sep 17 00:00:00 2001 From: Steve Simms Date: Thu, 29 Oct 2015 15:30:45 -0400 Subject: Check to see if worksheets are hidden --- lib/Spreadsheet/ParseXLSX.pm | 1 + t/data/hidden-sheet.xlsx | Bin 0 -> 7397 bytes t/hidden-sheet.t | 15 +++++++++++++++ 3 files changed, 16 insertions(+) create mode 100644 t/data/hidden-sheet.xlsx create mode 100644 t/hidden-sheet.t diff --git a/lib/Spreadsheet/ParseXLSX.pm b/lib/Spreadsheet/ParseXLSX.pm index ad7f54c..535063a 100644 --- a/lib/Spreadsheet/ParseXLSX.pm +++ b/lib/Spreadsheet/ParseXLSX.pm @@ -116,6 +116,7 @@ sub _parse_workbook { _Book => $workbook, _SheetNo => $idx, ); + $sheet->{SheetHidden} = 1 if defined $_->att('state') and $_->att('state') eq 'hidden'; $self->_parse_sheet($sheet, $files->{sheets}{$idx}); ($sheet) } else { diff --git a/t/data/hidden-sheet.xlsx b/t/data/hidden-sheet.xlsx new file mode 100644 index 0000000..d29cafb Binary files /dev/null and b/t/data/hidden-sheet.xlsx differ diff --git a/t/hidden-sheet.t b/t/hidden-sheet.t new file mode 100644 index 0000000..09d4402 --- /dev/null +++ b/t/hidden-sheet.t @@ -0,0 +1,15 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; + +use Spreadsheet::ParseXLSX; + +my $wb = Spreadsheet::ParseXLSX->new->parse('t/data/hidden-sheet.xlsx'); +my $ws1 = $wb->worksheet(0); +ok(!$ws1->is_sheet_hidden(), 'Regular worksheet is not hidden'); + +my $ws2 = $wb->worksheet(1); +ok($ws2->is_sheet_hidden(), 'Hidden worksheet is hidden'); + +done_testing; -- cgit v1.2.3-54-g00ecf