@@ -693,7 +693,8 @@ def engine(self):
693
693
pass
694
694
695
695
@abc .abstractmethod
696
- def write_cells (self , cells , sheet_name = None , startrow = 0 , startcol = 0 ):
696
+ def write_cells (self , cells , sheet_name = None , startrow = 0 , startcol = 0 ,
697
+ freeze_panes = None ):
697
698
"""
698
699
Write given formated cells into Excel an excel sheet
699
700
@@ -705,6 +706,8 @@ def write_cells(self, cells, sheet_name=None, startrow=0, startcol=0):
705
706
Name of Excel sheet, if None, then use self.cur_sheet
706
707
startrow: upper left cell row to dump data frame
707
708
startcol: upper left cell column to dump data frame
709
+ freeze_panes: integer tuple of length 2
710
+ contains the bottom-most row and right-most column to freeze
708
711
"""
709
712
pass
710
713
@@ -804,10 +807,10 @@ def save(self):
804
807
"""
805
808
return self .book .save (self .path )
806
809
807
- def write_cells (self , cells , sheet_name = None , startrow = 0 , startcol = 0 ):
810
+ def write_cells (self , cells , sheet_name = None , startrow = 0 , startcol = 0 ,
811
+ freeze_panes = None ):
808
812
# Write the frame cells using openpyxl.
809
813
from openpyxl .cell import get_column_letter
810
-
811
814
sheet_name = self ._get_sheet_name (sheet_name )
812
815
813
816
if sheet_name in self .sheets :
@@ -902,7 +905,8 @@ class _Openpyxl20Writer(_Openpyxl1Writer):
902
905
engine = 'openpyxl20'
903
906
openpyxl_majorver = 2
904
907
905
- def write_cells (self , cells , sheet_name = None , startrow = 0 , startcol = 0 ):
908
+ def write_cells (self , cells , sheet_name = None , startrow = 0 , startcol = 0 ,
909
+ freeze_panes = None ):
906
910
# Write the frame cells using openpyxl.
907
911
from openpyxl .cell import get_column_letter
908
912
@@ -1309,7 +1313,8 @@ class _Openpyxl22Writer(_Openpyxl20Writer):
1309
1313
engine = 'openpyxl22'
1310
1314
openpyxl_majorver = 2
1311
1315
1312
- def write_cells (self , cells , sheet_name = None , startrow = 0 , startcol = 0 ):
1316
+ def write_cells (self , cells , sheet_name = None , startrow = 0 , startcol = 0 ,
1317
+ freeze_panes = None ):
1313
1318
# Write the frame cells using openpyxl.
1314
1319
sheet_name = self ._get_sheet_name (sheet_name )
1315
1320
@@ -1322,6 +1327,10 @@ def write_cells(self, cells, sheet_name=None, startrow=0, startcol=0):
1322
1327
wks .title = sheet_name
1323
1328
self .sheets [sheet_name ] = wks
1324
1329
1330
+ if freeze_panes is not None :
1331
+ wks .freeze_panes = wks .cell (row = freeze_panes [0 ] + 1 ,
1332
+ column = freeze_panes [1 ] + 1 )
1333
+
1325
1334
for cell in cells :
1326
1335
xcell = wks .cell (
1327
1336
row = startrow + cell .row + 1 ,
@@ -1393,7 +1402,8 @@ def save(self):
1393
1402
"""
1394
1403
return self .book .save (self .path )
1395
1404
1396
- def write_cells (self , cells , sheet_name = None , startrow = 0 , startcol = 0 ):
1405
+ def write_cells (self , cells , sheet_name = None , startrow = 0 , startcol = 0 ,
1406
+ freeze_panes = None ):
1397
1407
# Write the frame cells using xlwt.
1398
1408
1399
1409
sheet_name = self ._get_sheet_name (sheet_name )
@@ -1404,6 +1414,11 @@ def write_cells(self, cells, sheet_name=None, startrow=0, startcol=0):
1404
1414
wks = self .book .add_sheet (sheet_name )
1405
1415
self .sheets [sheet_name ] = wks
1406
1416
1417
+ if freeze_panes is not None :
1418
+ wks .set_panes_frozen (True )
1419
+ wks .set_horz_split_pos (freeze_panes [0 ])
1420
+ wks .set_vert_split_pos (freeze_panes [1 ])
1421
+
1407
1422
style_dict = {}
1408
1423
1409
1424
for cell in cells :
@@ -1514,11 +1529,12 @@ def save(self):
1514
1529
"""
1515
1530
Save workbook to disk.
1516
1531
"""
1532
+
1517
1533
return self .book .close ()
1518
1534
1519
- def write_cells (self , cells , sheet_name = None , startrow = 0 , startcol = 0 ):
1535
+ def write_cells (self , cells , sheet_name = None , startrow = 0 , startcol = 0 ,
1536
+ freeze_panes = None ):
1520
1537
# Write the frame cells using xlsxwriter.
1521
-
1522
1538
sheet_name = self ._get_sheet_name (sheet_name )
1523
1539
1524
1540
if sheet_name in self .sheets :
@@ -1529,6 +1545,9 @@ def write_cells(self, cells, sheet_name=None, startrow=0, startcol=0):
1529
1545
1530
1546
style_dict = {}
1531
1547
1548
+ if freeze_panes is not None :
1549
+ wks .freeze_panes (* (freeze_panes ))
1550
+
1532
1551
for cell in cells :
1533
1552
val = _conv_value (cell .val )
1534
1553
0 commit comments