Skip to content

Commit

Permalink
fix #8: by default, do not reveal hidden sheets unless it is told to …
Browse files Browse the repository at this point in the history
…by skip_hidden_sheets=False
  • Loading branch information
chfw committed Jul 12, 2016
1 parent 3c6acea commit 1c4431f
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 0 deletions.
7 changes: 7 additions & 0 deletions pyexcel_xlsx/xlsx.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,10 +84,12 @@ class XLSXBook(BookReader):
"""
def open(self, file_name, **keywords):
BookReader.open(self, file_name, **keywords)
self._get_params()
self._load_from_file()

def open_stream(self, file_stream, **keywords):
BookReader.open_stream(self, file_stream, **keywords)
self._get_params()
self._load_from_memory()

def read_sheet_by_name(self, sheet_name):
Expand All @@ -110,6 +112,8 @@ def read_sheet_by_index(self, sheet_index):
def read_all(self):
result = OrderedDict()
for sheet in self.native_book:
if self.skip_hidden_sheets and sheet.sheet_state == 'hidden':
continue
data_dict = self.read_sheet(sheet)
result.update(data_dict)
return result
Expand All @@ -126,6 +130,9 @@ def _load_from_file(self):
self.native_book = openpyxl.load_workbook(filename=self.file_name,
data_only=True)

def _get_params(self):
self.skip_hidden_sheets = self.keywords.get('skip_hidden_sheets', True)


class XLSXSheetWriter(SheetWriter):
"""
Expand Down
15 changes: 15 additions & 0 deletions tests/test_bug_fixes.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import pyexcel as pe
from pyexcel_xlsx.xlsx import get_columns
from pyexcel.sheets.matrix import _excel_column_index
from nose.tools import eq_


class TestBugFix(TestCase):
Expand Down Expand Up @@ -119,3 +120,17 @@ def test_excessive_columns(self):
tmp_file = "date_field.xlsx"
s = pe.get_sheet(file_name=os.path.join("tests", "fixtures", tmp_file))
assert s.number_of_columns() == 2

def test_issue_8_hidden_sheet(self):
test_file = os.path.join("tests", "fixtures", "hidden_sheets.xlsx")
book_dict = pe.get_book_dict(file_name=test_file, library="pyexcel-xlsx")
assert "hidden" not in book_dict
eq_(book_dict['shown'], [['A', 'B']])

def test_issue_8_hidden_sheet_2(self):
test_file = os.path.join("tests", "fixtures", "hidden_sheets.xlsx")
book_dict = pe.get_book_dict(file_name=test_file,
skip_hidden_sheets=False, library="pyexcel-xlsx")
assert "hidden" in book_dict
eq_(book_dict['shown'], [['A', 'B']])
eq_(book_dict['hidden'], [['a', 'b']])

0 comments on commit 1c4431f

Please sign in to comment.