160
160
of dtype conversion.
161
161
engine : str, default None
162
162
If io is not a buffer or path, this must be set to identify io.
163
- Supported engines: "xlrd", "openpyxl", "odf", "pyxlsb".
163
+ Supported engines: "xlrd", "openpyxl", "odf", "pyxlsb", "calamine" .
164
164
Engine compatibility :
165
165
166
166
- "xlrd" supports old-style Excel files (.xls).
167
167
- "openpyxl" supports newer Excel file formats.
168
168
- "odf" supports OpenDocument file formats (.odf, .ods, .odt).
169
169
- "pyxlsb" supports Binary Excel files.
170
+ - "calamine" supports Excel (.xls, .xlsx, .xlsm, .xlsb)
171
+ and OpenDocument (.ods) file formats.
170
172
171
173
.. versionchanged:: 1.2.0
172
174
The engine `xlrd <https://xlrd.readthedocs.io/en/latest/>`_
@@ -395,7 +397,7 @@ def read_excel(
395
397
| Callable [[str ], bool ]
396
398
| None = ...,
397
399
dtype : DtypeArg | None = ...,
398
- engine : Literal ["xlrd" , "openpyxl" , "odf" , "pyxlsb" ] | None = ...,
400
+ engine : Literal ["xlrd" , "openpyxl" , "odf" , "pyxlsb" , "calamine" ] | None = ...,
399
401
converters : dict [str , Callable ] | dict [int , Callable ] | None = ...,
400
402
true_values : Iterable [Hashable ] | None = ...,
401
403
false_values : Iterable [Hashable ] | None = ...,
@@ -434,7 +436,7 @@ def read_excel(
434
436
| Callable [[str ], bool ]
435
437
| None = ...,
436
438
dtype : DtypeArg | None = ...,
437
- engine : Literal ["xlrd" , "openpyxl" , "odf" , "pyxlsb" ] | None = ...,
439
+ engine : Literal ["xlrd" , "openpyxl" , "odf" , "pyxlsb" , "calamine" ] | None = ...,
438
440
converters : dict [str , Callable ] | dict [int , Callable ] | None = ...,
439
441
true_values : Iterable [Hashable ] | None = ...,
440
442
false_values : Iterable [Hashable ] | None = ...,
@@ -473,7 +475,7 @@ def read_excel(
473
475
| Callable [[str ], bool ]
474
476
| None = None ,
475
477
dtype : DtypeArg | None = None ,
476
- engine : Literal ["xlrd" , "openpyxl" , "odf" , "pyxlsb" ] | None = None ,
478
+ engine : Literal ["xlrd" , "openpyxl" , "odf" , "pyxlsb" , "calamine" ] | None = None ,
477
479
converters : dict [str , Callable ] | dict [int , Callable ] | None = None ,
478
480
true_values : Iterable [Hashable ] | None = None ,
479
481
false_values : Iterable [Hashable ] | None = None ,
@@ -1463,13 +1465,15 @@ class ExcelFile:
1463
1465
.xls, .xlsx, .xlsb, .xlsm, .odf, .ods, or .odt file.
1464
1466
engine : str, default None
1465
1467
If io is not a buffer or path, this must be set to identify io.
1466
- Supported engines: ``xlrd``, ``openpyxl``, ``odf``, ``pyxlsb``
1468
+ Supported engines: ``xlrd``, ``openpyxl``, ``odf``, ``pyxlsb``, ``calamine``
1467
1469
Engine compatibility :
1468
1470
1469
1471
- ``xlrd`` supports old-style Excel files (.xls).
1470
1472
- ``openpyxl`` supports newer Excel file formats.
1471
1473
- ``odf`` supports OpenDocument file formats (.odf, .ods, .odt).
1472
1474
- ``pyxlsb`` supports Binary Excel files.
1475
+ - ``calamine`` supports Excel (.xls, .xlsx, .xlsm, .xlsb)
1476
+ and OpenDocument (.ods) file formats.
1473
1477
1474
1478
.. versionchanged:: 1.2.0
1475
1479
@@ -1505,6 +1509,7 @@ class ExcelFile:
1505
1509
... df1 = pd.read_excel(xls, "Sheet1") # doctest: +SKIP
1506
1510
"""
1507
1511
1512
+ from pandas .io .excel ._calamine import CalamineReader
1508
1513
from pandas .io .excel ._odfreader import ODFReader
1509
1514
from pandas .io .excel ._openpyxl import OpenpyxlReader
1510
1515
from pandas .io .excel ._pyxlsb import PyxlsbReader
@@ -1515,6 +1520,7 @@ class ExcelFile:
1515
1520
"openpyxl" : OpenpyxlReader ,
1516
1521
"odf" : ODFReader ,
1517
1522
"pyxlsb" : PyxlsbReader ,
1523
+ "calamine" : CalamineReader ,
1518
1524
}
1519
1525
1520
1526
def __init__ (
0 commit comments