Python – Openpyxl – "UserWarning: Unknown extension" issue

Question:

I am trying to learn Python (day 2) and am hoping to practice with Excel books first as this is where I am comfortable/fluent.

Right off the bat I am having an error that I don’t quit understand when running the below code:

import openpyxl

wb = openpyxl.load_workbook("/Users/Scott/Desktop/Workbook1.xlsx")

print(wb.sheetnames)

This does print my sheet names as requested, but it is followed by:

/Users/Scott/PycharmProjects/Excel/venv/lib/python3.7/site-packages/openpyxl/worksheet/_reader.py:293: UserWarning: Unknown extension is not supported and will be removed
  warn(msg)

I have found other questions that point to slicers/conditional formatting etc, but that does not apply here. This is a book I just made and only added 3 sheets before saving. It has no data, no formatting, and the extension is valid. I have no add-ons installed on my excel either.

Any idea why why I am getting this error? How do I resolve?

enter image description here

Python: 3.7
openpyxl: 2.6

Asked By: urdearboy

||

Answers:

I had a similar issue. I developed an application which read and write Excel files. It woked well on my Windows computer, but then I tried to run it on a friends mac. It showed the same error. I could “fix” it by changing the configuration of the workbook, like this:

import openpyxl as op

wb = op.load_workbook(file, read_only=True, data_only=True)

But, as you can see, you can only read Excel files with this configuration. At the end, I realized that my friend didn’t have Microsoft Office installed on his computer. Install it truly solved my problem.

This question was from a couple years ago but I’m encountering it now with openpyxl and require a fix, as the warning is confounding and misleading to my end users.

The warning from openpyxl comes via the stdlib warnings library, which can be suppressed.

import warnings
warnings.simplefilter("ignore")

That’s the "hit it with a hammer" approach. More granular levels of warnings suppression can be found here: https://docs.python.org/3/library/warnings.html

Answered By: Ben Klaas

This is exactly the problem I encountered just now..

And to my situation (not to everyone) I discovered that you just need to close your excel and rerun the code, very simple.

If this doesn’t work, you can refer to other answers.

Thanks

Answered By: Luke Yin

Python – Openpyxl – "UserWarning: Unknown extension" issue

To understand the error, you need to know what’s inside an XLSX file. The best way to take a look is to change the extension to zip and open that. Inside you will see a file called [Content_Types].xml and directories for the other content. If you check out the XML in Content_Types you will see a <Types ...> tag containing other tags like this:

<Default Extension="png" ContentType="image/png"/>
<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>
<Default Extension="xml" ContentType="application/xml"/>

Note the "Extension" property. This is what the warning refers to. In the example above, my file included Extension="png" – the unknown extension.
For me, it was enough to specify read_only=True and the error went away eg:

wb = openpyxl.load_workbook(file, read_only=True)

I could also fix the issue by copying everything except the images to a new workbook and saving that. After checking, the xml in the new workbook no longer contained the png property.

Note, reading into pandas with pd.read_excel uses openpyxl and generates the same "Unknown extension" error but there is no way to pass through the read_only parameter. You can suppress the specific warning with:

import warnings
warnings.filterwarnings('ignore', category=UserWarning, module='openpyxl')
Answered By: InnocentBystander
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.