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.

path_or_bufferstr, bytes, path object (pathlib.Path or py._path.local.LocalPath),

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.

enginestr, default None

If io is not a buffer or path, this must be set to identify io. Supported engines: xlrd, openpyxl, odf, pyxlsb, calamine Engine compatibility :

  • xlrd supports old-style Excel files (.xls).

  • openpyxl supports newer Excel file formats.

  • odf supports OpenDocument file formats (.odf, .ods, .odt).

  • pyxlsb supports Binary Excel files.

  • calamine supports Excel (.xls, .xlsx, .xlsm, .xlsb) and OpenDocument (.ods) file formats.

Changed in version 1.2.0: The engine xlrd now only supports old-style .xls files. When engine=None, the following logic will be used to determine the engine:

  • If path_or_buffer is an OpenDocument format (.odf, .ods, .odt), then odf will be used.

  • Otherwise if path_or_buffer is an xls format, xlrd will be used.

  • Otherwise if path_or_buffer is in xlsb format, pyxlsb will be used.

New in version 1.3.0.

  • Otherwise if openpyxl is installed, then openpyxl will be used.

  • Otherwise if xlrd >= 2.0 is installed, a ValueError will be raised.


Please do not report issues when using xlrd to read .xlsx files. This is not supported, switch to using openpyxl instead.

engine_kwargsdict, optional

Arbitrary keyword arguments passed to excel engine.


>>> file = pd.ExcelFile('myfile.xlsx')  
>>> with pd.ExcelFile("myfile.xls") as xls:  
...     df1 = pd.read_excel(xls, "Sheet1")  






close io if necessary

parse([sheet_name, header, names, ...])

Parse specified sheet(s) into a DataFrame.