@@ -514,17 +514,14 @@ def read_excel(
514
514
if engine_kwargs is None :
515
515
engine_kwargs = {}
516
516
517
- # set to false so cells have a comment attribute
518
- if notes is not None and engine == "openpyxl" :
519
- engine_kwargs = {"read_only" : False }
520
-
521
517
if not isinstance (io , ExcelFile ):
522
518
should_close = True
523
519
io = ExcelFile (
524
520
io ,
525
521
storage_options = storage_options ,
526
522
engine = engine ,
527
523
engine_kwargs = engine_kwargs ,
524
+ notes = notes ,
528
525
)
529
526
elif engine and engine != io .engine :
530
527
raise ValueError (
@@ -1574,6 +1571,8 @@ class ExcelFile:
1574
1571
{storage_options}
1575
1572
engine_kwargs : dict, optional
1576
1573
Arbitrary keyword arguments passed to excel engine.
1574
+ notes : DataFrame, default None
1575
+ DataFrame that holds notes of the Excel file.
1577
1576
1578
1577
See Also
1579
1578
--------
@@ -1609,6 +1608,7 @@ def __init__(
1609
1608
engine : str | None = None ,
1610
1609
storage_options : StorageOptions | None = None ,
1611
1610
engine_kwargs : dict | None = None ,
1611
+ notes : DataFrame | None = None ,
1612
1612
) -> None :
1613
1613
if engine_kwargs is None :
1614
1614
engine_kwargs = {}
@@ -1655,6 +1655,10 @@ def __init__(
1655
1655
self .engine = engine
1656
1656
self .storage_options = storage_options
1657
1657
1658
+ # set so the engine can access the notes from a cell
1659
+ if notes is not None and engine == "openpyxl" :
1660
+ engine_kwargs .update ({"read_only" : False })
1661
+
1658
1662
self ._reader = self ._engines [engine ](
1659
1663
self ._io ,
1660
1664
storage_options = storage_options ,
0 commit comments