As @COLDSPEED so eloquently pointed out the error explicitly tells you to install xlrd.

pip install xlrd

And you will be good to go.

Answer from Grr on Stack Overflow
🌐
PyTutorial
pytutorial.com › integrate-python-xlrd-with-pandas-for-data-analysis
PyTutorial | Integrate Python xlrd with pandas for Data Analysis
November 19, 2025 - ... Verify the installation by importing them. No errors should appear. This confirms successful installation. import xlrd import pandas as pd print("Libraries imported successfully")
🌐
Python Basics
pythonbasics.org › home › pandas › read excel with python pandas
Read Excel with Python Pandas - pythonbasics.org
Read Excel files (extensions:.xlsx, .xls) with Python Pandas. To read an excel file as a DataFrame, use the pandas read_excel() method. You can read the first s
🌐
Pandas
pandas.pydata.org › pandas-docs › stable › reference › api › pandas.read_excel.html
pandas.read_excel — pandas 3.0.6 documentation
December 26, 2020 - E.g. {‘a’: np.float64, ‘b’: np.int32} Use object to preserve data as stored in Excel and not interpret dtype, which will necessarily result in object dtype. If converters are specified, they will be applied INSTEAD of dtype conversion. If you use None, it will infer the dtype of each column based on the data. engine{‘openpyxl’, ‘calamine’, ‘odf’, ‘pyxlsb’, ‘xlrd’}, default None
Top answer
1 of 1
2

Or can someone help me take the sheet from xlrd and convert it into a Pandas dataframe?

pd.read_excel can take a book...

import xlrd

book = xlrd.open_workbook(filename='./file_check/file.xls')

df = pd.read_excel(book, skiprows=5)

print(df)

   some   column headers
0     1     some     foo
1     2  strings     bar
2     3     here     yes
3     4      too      no

I'll include the code below that may help if you want to check/handle Excel file types. Maybe you can adapt it for your needs.

The code loops through a local folder and shows the file and extension but then uses python-magic to drill into it. It also has a column showing guessing from mimetypes but that isn't as good. Do zoom into the image of the frame and see that some .xls are not what the extension says. Also a .txt is actually an Excel file.

import pandas as pd
import glob
import mimetypes
import os
# https://pypi.org/project/python-magic/
import magic

path = r'./file_check' # use your path
all_files = glob.glob(path + "/*.*")

data = []

for file in all_files:
    name, extension = os.path.splitext(file)
    data.append([file, extension, magic.from_file(file, mime=True), mimetypes.guess_type(file)[0]])

df = pd.DataFrame(data, columns=['Path', 'Extension', 'magic.from_file(file, mime=True)', 'mimetypes.guess_type'])

# del df['magic.from_file(file, mime=True)']

df

From there you could filter files based on their type:

xlsx_file_format = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'

xls_file_format = 'application/vnd.ms-excel'

for file in all_files:
    if magic.from_file(file, mime=True) == xlsx_file_format:
        print('xlsx')
        #  DO SOMETHING SPECIAL WITH XLSX FILES
    elif magic.from_file(file, mime=True) == xls_file_format:
        print('xls')
        #  DO SOMETHING SPECIAL WITH XLS FILES
    else:
        continue

dfs = []

for file in all_files:
    if (magic.from_file(file, mime=True) == xlsx_file_format) or \
    (magic.from_file(file, mime=True) == xls_file_format):
        # who cares, it all works with this for the demo...
        df = pd.read_excel(file, skiprows=5, names=['some', 'column', 'headers'])
        dfs.append(df)
    
print('\nHow many frames did we get from seven files? ', len(dfs))

Output:

xlsx
xls
xls
xlsx

How many frames did we get from seven files?  4
🌐
Pandas
pandas.pydata.org › docs › reference › api › pandas.ExcelFile.html
pandas.ExcelFile — pandas 3.0.5 documentation - PyData |
class pandas.ExcelFile(path_or_buffer, engine=None, storage_options=None, engine_kwargs=None)[source]# Class for parsing tabular Excel sheets into DataFrame objects. See read_excel for more documentation. ... A file-like object, xlrd workbook or openpyxl workbook. If a string or path object, expected to be a path to a .xls, .xlsx, .xlsb, .xlsm, .odf, .ods, or .odt file.
🌐
G2
g2.com › compare › pandas-python-vs-python-xlrd
pandas python vs. python xlrd Comparison 2026 | G2
Customize this compareAdd the features that matter most to you to compare side by side Customize and save ... Reviewers felt that pandas python meets the needs of their business better than python xlrd.
Address: 100 S Wacker DrSTE 600, 60606, Chicago
Find elsewhere
🌐
Readthedocs
xlrd.readthedocs.io
xlrd — xlrd 2.0.1 documentation
xlrd is a library for reading data and formatting information from Excel files in the historical .xls format.
🌐
GitHub
gist.github.com › jiffyclub › 9ab668f63c3d0f9adf3e730dc37cd419
Using pandas and xlrd to concatenate multiple excel sheets into a single dataframe. In answer to this Stack Overflow question: https://stackoverflow.com/questions/45113070/how-do-i-make-this-function-for-concatenating-excel-sheets-from-a-single-file-mo# · GitHub
June 6, 2019 - Using pandas and xlrd to concatenate multiple excel sheets into a single dataframe. In answer to this Stack Overflow question: https://stackoverflow.com/questions/45113070/how-do-i-make-this-function-for-concatenating-excel-sheets-from-a-single-file-mo# - Excel to Pandas.ipynb
🌐
Pandas
pandas.pydata.org › docs › dev › reference › api › pandas.ExcelFile.html
pandas.ExcelFile — pandas 3.1.0.dev0 documentation
class pandas.ExcelFile(path_or_buffer, engine=None, storage_options=None, engine_kwargs=None)[source]# Class for parsing tabular Excel sheets into DataFrame objects. See read_excel for more documentation. ... A file-like object, xlrd workbook or openpyxl workbook. If a string or path object, expected to be a path to a .xls, .xlsx, .xlsb, .xlsm, .odf, .ods, or .odt file.
🌐
DevGenius
blog.devgenius.io › reading-excel-files-with-pandas-the-basics-6a6be9cc8763
How to Read Excel Files Using Pandas | by Zoltan Guba | Dev Genius
June 20, 2022 - The tricky part is when you have to use any of the parameters as I did with “engine” — did you notice? Short story: XLRD is the default engine for Pandas to read Excel files, and as it happens XLRD stopped supporting XLSX files.
🌐
Pandas
pandas.pydata.org › docs › reference › api › pandas.read_excel.html
pandas.read_excel — pandas 3.0.6 documentation - PyData |
E.g. {‘a’: np.float64, ‘b’: np.int32} Use object to preserve data as stored in Excel and not interpret dtype, which will necessarily result in object dtype. If converters are specified, they will be applied INSTEAD of dtype conversion. If you use None, it will infer the dtype of each column based on the data. engine{‘openpyxl’, ‘calamine’, ‘odf’, ‘pyxlsb’, ‘xlrd’}, default None
🌐
Stack Overflow
stackoverflow.com › questions › 60596208 › turning-a-pandas-dataframe-from-excel-file-xlrd-to-a-list
python - Turning a pandas dataframe from Excel file (xlrd) to a list - Stack Overflow
Any better way to solve the problem is also appreciated. import pandas as pd import xlrd workbook = xlrd.open_workbook("MyData_XYZ.xlsx") sheet1 = workbook.sheet_by_index(0) def get_cell_range2(sheet, start_col, start_row, end_col, end_row): ...
🌐
Databricks Community
community.databricks.com › databricks community › data engineering › pyspark.pandas.read_excel(engine = xlrd) reading xls file with #ref error
pyspark.pandas.read_excel(engine = xlrd) reading x... - Databricks Community - 38115
August 8, 2023 - I need to read it into pyspark. I tried pyspark.pandas.read_excel(file_path, sheet_name = 'sheet_name', engine='xlrd', convert_float=False, dtype='str', errors='coerce').to_spark() and expected it to read the file, but get the error "read_excel() got an unexpected keyword argument 'errors'".
Top answer
1 of 1
2

There are several ways you can go about doing this.

  1. Use pandas.read_excel

  2. Manually convert excel workbook to csv file then use pandas.read_csv

  3. Use Python code to convert excel workbook to csv file then use pandas.read_csv

The third method is your best approach. It's the fastest.

Here is my excel workbook

1

df1 = pandas.read_excel('workbook.xlsx')
print(df1)

Out

  col1    col2     col3        col4
0   I   should       be  completing
1   my  linear  algebra    homework

2

I named the .csv file 'workbook.csv'

df2 = pandas.read_csv('workbook.csv')
print(df2)

Out

  col1    col2     col3        col4
0   I   should       be  completing
1   my  linear  algebra    homework

3

import csv
import xlrd
with xlrd.open_workbook('workbook.xlsx') as wb:
    sh = wb.sheet_by_index(0)
    with open('workbook.csv', 'w', newline="") as csv_file:
        col = csv.writer(csv_file)
        for row in range(sh.nrows):
            col.writerow(sh.row_values(row))
df3 = pandas.read_csv('workbook.csv')
print(df3)

Here is the .csv produced, calle

col1,col2,col3,col4
I,should,be,completing
my,linear,algebra,homework

And then the subsequent dataframe

  col1    col2     col3        col4
0   I   should       be  completing
1   my  linear  algebra    homework

VERDICT

All the outputs for each method is the same but method 3 is the fastest. This means you should import csv and xlrd to convert each of your xlsx files to csv files and then use read_csv. You can use os to get into your specific directories. Add for loops for each file for solution 3.

NOTE

Test method 1 versus 2 for yourself because I am getting somewhat inconsistent results using the timeit module and writing

start = timeit.timeit()
# code
end = timeit.timeit()
print(f"Time {end - start} {df}")

but I am not sure if I am using it correctly. So, at the very least, try the first and last methods for yourself and see which ones go faster.

🌐
Pandas
pandas.pydata.org › pandas-docs › stable › reference › api › pandas.ExcelFile.html
pandas.ExcelFile — pandas 2.2.3 documentation - PyData |
class pandas.ExcelFile(path_or_buffer, engine=None, storage_options=None, engine_kwargs=None)[source]# Class for parsing tabular Excel sheets into DataFrame objects. See read_excel for more documentation. ... A file-like object, xlrd workbook or openpyxl workbook. If a string or path object, expected to be a path to a .xls, .xlsx, .xlsb, .xlsm, .odf, .ods, or .odt file.
🌐
GitHub
github.com › pandas-dev › pandas › issues › 14673
xlrd required for read_excel put not a requirement in setup.py · Issue #14673 · pandas-dev/pandas
November 16, 2016 - # Your code here import pandas as pd pd.read_excel('srep10775-s2.xls', sheet=1) ... 218 def __init__(self, io, **kwds): 219 --> 220 import xlrd # throw an ImportError if we need to 221 222 ver = tuple(map(int, xlrd.__VERSION__.split(".")[:2])) ImportError: No module named 'xlrd'
Author: pandas-dev
🌐
Alteryx Knowledge
knowledge.alteryx.com › index › s › article › Python-Error-XLRDError-Excel-xlsx-file-not-supported
Python Error: XLRDError: Excel xlsx file; not supported
Use openpyxl to open .xlsx files instead of xlrd. Install the openpyxl library on your cluster. Confirm that you are using pandas version 1.0.1 or above.