From 1be0561df529ef0597465c6dfe023e34f7dd6d4d Mon Sep 17 00:00:00 2001 From: Thijs Damsma Date: Fri, 28 Jun 2019 18:44:09 +0200 Subject: [PATCH] Openpyxl engine for reading excel files (#25092) --- doc/source/whatsnew/v0.25.0.rst | 1 + pandas/_typing.py | 1 + pandas/core/config_init.py | 38 ++++++++++++- pandas/io/excel/_base.py | 4 +- pandas/io/excel/_openpyxl.py | 74 +++++++++++++++++++++++++- pandas/tests/io/data/test1.xlsm | Bin 13967 -> 12091 bytes pandas/tests/io/data/test1.xlsx | Bin 13878 -> 12074 bytes pandas/tests/io/excel/test_readers.py | 11 +++- 8 files changed, 125 insertions(+), 4 deletions(-) diff --git a/doc/source/whatsnew/v0.25.0.rst b/doc/source/whatsnew/v0.25.0.rst index 1fd0257d93f45..1fe808e098860 100644 --- a/doc/source/whatsnew/v0.25.0.rst +++ b/doc/source/whatsnew/v0.25.0.rst @@ -159,6 +159,7 @@ Other enhancements - Added support for reading SPSS .sav files using :func:`read_spss` (:issue:`26537`) - Added new option ``plotting.backend`` to be able to select a plotting backend different than the existing ``matplotlib`` one. Use ``pandas.set_option('plotting.backend', '')`` where `` None: + """Reader using openpyxl engine. + + Parameters + ---------- + filepath_or_buffer : string, path object or Workbook + Object to be parsed. + """ + import_optional_dependency("openpyxl") + super().__init__(filepath_or_buffer) + + @property + def _workbook_class(self): + from openpyxl import Workbook + return Workbook + + def load_workbook(self, filepath_or_buffer: FilePathOrBuffer): + from openpyxl import load_workbook + return load_workbook(filepath_or_buffer, + read_only=True, data_only=True) + + @property + def sheet_names(self) -> List[str]: + return self.book.sheetnames + + def get_sheet_by_name(self, name: str): + return self.book[name] + + def get_sheet_by_index(self, index: int): + return self.book.worksheets[index] + + def _convert_cell(self, cell, convert_float: bool) -> Scalar: + + # TODO: replace with openpyxl constants + if cell.is_date: + return cell.value + elif cell.data_type == 'e': + return np.nan + elif cell.data_type == 'b': + return bool(cell.value) + elif cell.value is None: + return '' # compat with xlrd + elif cell.data_type == 'n': + # GH5394 + if convert_float: + val = int(cell.value) + if val == cell.value: + return val + else: + return float(cell.value) + + return cell.value + + def get_sheet_data(self, sheet, convert_float: bool) -> List[List[Scalar]]: + data = [] # type: List[List[Scalar]] + for row in sheet.rows: + data.append( + [self._convert_cell(cell, convert_float) for cell in row]) + + return data diff --git a/pandas/tests/io/data/test1.xlsm b/pandas/tests/io/data/test1.xlsm index f93c57ab7f857e1c6b7654542e2e9bde54ae80d9..28f4f27e4e1b18862d5d063d635f895463396849 100644 GIT binary patch delta 8907 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 R$Y9DJ4rl2e$Z delta 10681 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 Y|Eem$y>^TLM8*Q-zMh$Njz6>i0rpo}xc~qF diff --git a/pandas/tests/io/data/test1.xlsx b/pandas/tests/io/data/test1.xlsx index a437d838fe13082f989d7f8ea253f091490c2777..862574e05a114240e403a653b7fe22d2feb458b3 100644 GIT binary patch delta 8845 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 delta 10588 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