diff --git a/pandas/io/excel.py b/pandas/io/excel.py index 6b7c597ecfcdc..f34ba65cf7b51 100644 --- a/pandas/io/excel.py +++ b/pandas/io/excel.py @@ -788,9 +788,15 @@ def __init__(self, path, engine=None, **engine_kwargs): # Create workbook object with default optimized_write=True. self.book = Workbook() + # Openpyxl 1.6.1 adds a dummy sheet. We remove it. if self.book.worksheets: - self.book.remove_sheet(self.book.worksheets[0]) + try: + self.book.remove(self.book.worksheets[0]) + except AttributeError: + + # compat + self.book.remove_sheet(self.book.worksheets[0]) def save(self): """ @@ -911,7 +917,7 @@ def write_cells(self, cells, sheet_name=None, startrow=0, startcol=0): for cell in cells: colletter = get_column_letter(startcol + cell.col + 1) - xcell = wks.cell("%s%s" % (colletter, startrow + cell.row + 1)) + xcell = wks["%s%s" % (colletter, startrow + cell.row + 1)] xcell.value = _conv_value(cell.val) style_kwargs = {} @@ -952,7 +958,7 @@ def write_cells(self, cells, sheet_name=None, startrow=0, startcol=0): # Ignore first cell. It is already handled. continue colletter = get_column_letter(col) - xcell = wks.cell("%s%s" % (colletter, row)) + xcell = wks["%s%s" % (colletter, row)] xcell.style = xcell.style.copy(**style_kwargs) @classmethod diff --git a/pandas/io/tests/test_excel.py b/pandas/io/tests/test_excel.py index 9dd2739608b7a..a2162320d9d1b 100644 --- a/pandas/io/tests/test_excel.py +++ b/pandas/io/tests/test_excel.py @@ -2006,8 +2006,8 @@ def test_write_cells_merge_styled(self): writer.write_cells(merge_cells, sheet_name=sheet_name) wks = writer.sheets[sheet_name] - xcell_b1 = wks.cell('B1') - xcell_a2 = wks.cell('A2') + xcell_b1 = wks['B1'] + xcell_a2 = wks['A2'] self.assertEqual(xcell_b1.style, openpyxl_sty_merged) self.assertEqual(xcell_a2.style, openpyxl_sty_merged) @@ -2118,8 +2118,8 @@ def test_write_cells_merge_styled(self): writer.write_cells(merge_cells, sheet_name=sheet_name) wks = writer.sheets[sheet_name] - xcell_b1 = wks.cell('B1') - xcell_a2 = wks.cell('A2') + xcell_b1 = wks['B1'] + xcell_a2 = wks['A2'] self.assertEqual(xcell_b1.font, openpyxl_sty_merged) self.assertEqual(xcell_a2.font, openpyxl_sty_merged) @@ -2213,11 +2213,18 @@ def test_column_format(self): writer.save() read_workbook = openpyxl.load_workbook(path) - read_worksheet = read_workbook.get_sheet_by_name(name='Sheet1') + try: + read_worksheet = read_workbook['Sheet1'] + except TypeError: + # compat + read_worksheet = read_workbook.get_sheet_by_name(name='Sheet1') - # Get the number format from the cell. This method is backward - # compatible with older versions of openpyxl. - cell = read_worksheet.cell('B2') + # Get the number format from the cell. + try: + cell = read_worksheet['B2'] + except TypeError: + # compat + cell = read_worksheet.cell('B2') try: read_num_format = cell.number_format