@@ -36,12 +36,12 @@ def save(self):
3636 def write_cells (
3737 self , cells , sheet_name = None , startrow = 0 , startcol = 0 , freeze_panes = None
3838 ):
39+ """
40+ Write the frame cells using odf
41+ """
3942 from odf .table import Table , TableCell , TableRow
4043 from odf .text import P
4144
42- # Write the frame cells using odf
43- # assert startrow == 0
44- # assert startcol == 0
4545 sheet_name = self ._get_sheet_name (sheet_name )
4646
4747 if sheet_name in self .sheets :
@@ -53,10 +53,18 @@ def write_cells(
5353 if _validate_freeze_panes (freeze_panes ):
5454 self ._create_freeze_panes (sheet_name , freeze_panes )
5555
56+ for _ in range (startrow ):
57+ wks .addElement (TableRow ())
58+
5659 rows : DefaultDict = defaultdict (TableRow )
5760 col_count : DefaultDict = defaultdict (int )
5861
5962 for cell in sorted (cells , key = lambda cell : (cell .row , cell .col )):
63+ # only add empty cells if the row is still empty
64+ if not col_count [cell .row ]:
65+ for _ in range (startcol ):
66+ rows [cell .row ].addElement (TableCell ())
67+
6068 # fill with empty cells if needed
6169 for _ in range (cell .col - col_count [cell .row ]):
6270 rows [cell .row ].addElement (TableCell ())
0 commit comments