Skip to content

Commit d59f42e

Browse files
committed
Xls reader: Error as missing value
1 parent 919dc35 commit d59f42e

File tree

3 files changed

+7
-3
lines changed

3 files changed

+7
-3
lines changed

Orange/data/io.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -352,13 +352,16 @@ def sheets(self) -> List:
352352
return self.workbook.sheet_names() if self.workbook else []
353353

354354
def get_cells(self) -> Iterable:
355+
def str_(cell):
356+
return "" if cell.ctype == xlrd.XL_CELL_ERROR else str(cell.value)
357+
355358
sheet = self._get_active_sheet()
356359
first_row = next(i for i in range(sheet.nrows)
357360
if any(sheet.row_values(i)))
358361
first_col = next(i for i in range(sheet.ncols)
359362
if sheet.cell_value(first_row, i))
360363
row_len = sheet.row_len(first_row)
361-
return filter(any, ([str(sheet.cell_value(row, col))
364+
return filter(any, ([str_(sheet.cell(row, col))
362365
if col < sheet.row_len(row) else ''
363366
for col in range(first_col, row_len)]
364367
for row in range(first_row, sheet.nrows)))

Orange/tests/test_xlsx_reader.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,8 +182,9 @@ def test_read(self, reader: Callable[[str], io.FileFormat]):
182182

183183

184184
class TestMissingValues(unittest.TestCase):
185-
def test_read_errors(self):
186-
table = read_file(get_xlsx_reader, "missing")
185+
@test_xlsx_xls
186+
def test_read_errors(self, reader: Callable[[str], io.FileFormat]):
187+
table = read_file(reader, "missing")
187188
values = table.get_column_view("C")[0]
188189
self.assertTrue(np.isnan(values).all())
189190

19.5 KB
Binary file not shown.

0 commit comments

Comments
 (0)