Skip to content

Commit a2fe5c0

Browse files
committed
merge defect fixes from 0.3.x branch
2 parents 8f17b27 + f8d76ba commit a2fe5c0

File tree

3 files changed

+61
-47
lines changed

3 files changed

+61
-47
lines changed

pyexcel_xls/xlsr.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,9 +124,11 @@ def _get_book(self, on_demand=False):
124124
if self._file_name:
125125
xls_book = xlrd.open_workbook(self._file_name, on_demand=on_demand)
126126
elif self._file_stream:
127+
self._file_stream.seek(0)
128+
file_content = self._file_stream.read()
127129
xls_book = xlrd.open_workbook(
128130
None,
129-
file_contents=self._file_stream.getvalue(),
131+
file_contents=file_content,
130132
on_demand=on_demand
131133
)
132134
elif self._file_content is not None:

tests/test_bug_fixes.py

Lines changed: 58 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -12,49 +12,61 @@
1212
import datetime
1313

1414

15-
class TestBugFix:
16-
def test_pyexcel_issue_5(self):
17-
"""pyexcel issue #5
18-
19-
datetime is not properly parsed
20-
"""
21-
s = pe.load(os.path.join("tests",
22-
"test-fixtures",
23-
"test-date-format.xls"))
24-
assert s[0, 0] == datetime.datetime(2015, 11, 11, 11, 12, 0)
25-
26-
def test_pyexcel_xls_issue_2(self):
27-
data = OrderedDict()
28-
array = []
29-
for i in range(4100):
30-
array.append([datetime.datetime.now()])
31-
data.update({"test": array})
32-
save_data("test.xls", data)
33-
os.unlink("test.xls")
34-
35-
def test_issue_9_hidden_sheet(self):
36-
test_file = os.path.join("tests", "fixtures", "hidden_sheets.xls")
37-
book_dict = pe.get_book_dict(file_name=test_file)
38-
assert "hidden" not in book_dict
39-
eq_(book_dict['shown'], [['A', 'B']])
40-
41-
def test_issue_9_hidden_sheet_2(self):
42-
test_file = os.path.join("tests", "fixtures", "hidden_sheets.xls")
43-
book_dict = pe.get_book_dict(file_name=test_file,
44-
skip_hidden_sheets=False)
45-
assert "hidden" in book_dict
46-
eq_(book_dict['shown'], [['A', 'B']])
47-
eq_(book_dict['hidden'], [['a', 'b']])
48-
49-
def test_issue_10_generator_as_content(self):
50-
def data_gen():
51-
def custom_row_renderer(row):
52-
for e in row:
53-
yield e
54-
for i in range(2):
55-
yield custom_row_renderer([1, 2])
56-
save_data("test.xls", {"sheet": data_gen()})
57-
58-
@raises(IOError)
59-
def test_issue_13_empty_file_content(self):
60-
pe.get_sheet(file_content='', file_type='xls')
15+
def test_pyexcel_issue_5():
16+
"""pyexcel issue #5
17+
18+
datetime is not properly parsed
19+
"""
20+
s = pe.load(get_fixture("test-date-format.xls"))
21+
assert s[0, 0] == datetime.datetime(2015, 11, 11, 11, 12, 0)
22+
23+
24+
def test_pyexcel_xls_issue_2():
25+
data = OrderedDict()
26+
array = []
27+
for i in range(4100):
28+
array.append([datetime.datetime.now()])
29+
data.update({"test": array})
30+
save_data("test.xls", data)
31+
os.unlink("test.xls")
32+
33+
34+
def test_issue_9_hidden_sheet():
35+
test_file = get_fixture("hidden_sheets.xls")
36+
book_dict = pe.get_book_dict(file_name=test_file)
37+
assert "hidden" not in book_dict
38+
eq_(book_dict['shown'], [['A', 'B']])
39+
40+
41+
def test_issue_9_hidden_sheet_2():
42+
test_file = get_fixture("hidden_sheets.xls")
43+
book_dict = pe.get_book_dict(file_name=test_file,
44+
skip_hidden_sheets=False)
45+
assert "hidden" in book_dict
46+
eq_(book_dict['shown'], [['A', 'B']])
47+
eq_(book_dict['hidden'], [['a', 'b']])
48+
49+
50+
def test_issue_10_generator_as_content():
51+
def data_gen():
52+
def custom_row_renderer(row):
53+
for e in row:
54+
yield e
55+
for i in range(2):
56+
yield custom_row_renderer([1, 2])
57+
save_data("test.xls", {"sheet": data_gen()})
58+
59+
60+
@raises(IOError)
61+
def test_issue_13_empty_file_content():
62+
pe.get_sheet(file_content='', file_type='xls')
63+
64+
65+
def test_issue_16_file_stream_has_no_getvalue():
66+
test_file = get_fixture("hidden_sheets.xls")
67+
with open(test_file, 'rb') as f:
68+
pe.get_sheet(file_stream=f, file_type='xls')
69+
70+
71+
def get_fixture(file_name):
72+
return os.path.join("tests", "fixtures", file_name)

0 commit comments

Comments
 (0)