pythonexcelopenpyxl

Getting "At least one sheet must be visible" when trying to open excel spreadsheet. What to do?


When trying to open an excel spreadsheet do same changes and save it:

import openpyxl

workbook = openpyxl.load_workbook(filename = 'sample.xlsx', read_only=False)
workbook.save('test.xlsx')

I get the following upon calling save():

Traceback (most recent call last):
  File "read_pyxl.py", line 4, in <module>
    workbook.save('test.xlsx')
  File "/home/martin/myvenv/lib/python3.8/site-packages/openpyxl/workbook/workbook.py", line 407, in save
    save_workbook(self, filename)
  File "/home/martin/myvenv/lib/python3.8/site-packages/openpyxl/writer/excel.py", line 293, in save_workbook
    writer.save()
  File "/home/martin/myvenv/lib/python3.8/site-packages/openpyxl/writer/excel.py", line 275, in save
    self.write_data()
  File "/home/martin/myvenv/lib/python3.8/site-packages/openpyxl/writer/excel.py", line 89, in write_data
    archive.writestr(ARC_WORKBOOK, writer.write())
  File "/home/martin/myvenv/lib/python3.8/site-packages/openpyxl/workbook/_writer.py", line 148, in write
    self.write_views()
  File "/home/martin/myvenv/lib/python3.8/site-packages/openpyxl/workbook/_writer.py", line 135, in write_views
    active = get_active_sheet(self.wb)
  File "/home/martin/myvenv/lib/python3.8/site-packages/openpyxl/workbook/_writer.py", line 33, in get_active_sheet
    raise IndexError("At least one sheet must be visible")
IndexError: At least one sheet must be visible
>>> 

How do I fix this ?


Solution

  • Turned out in this case sample.xlsx had all sheets set to "hidden". If at least one of the sheets is set to be visible the code works.

    A weird limitation, but it exists.