Python – How to skip the first few rows of an Excel worksheet in Python

How to skip the first few rows of an Excel worksheet in Python… here is a solution to the problem.

How to skip the first few rows of an Excel worksheet in Python

I was able to successfully unmerge all cells in an Excel worksheet using openpyxl; However, I want to keep the first 7 rows of the worksheet. As shown below, the first 7 rows contain the merged cells.

Upper excel sheet

After I run the following code (find the merged cells and split them):

def fill_in(rows,first_cell,last_cell):
    #Take first cell's value
    first_value = first_cell.value
    #Copy and fill/assign this value into each cell of the range
    for tmp in rows:  
        cell = tmp[0]
        print(cell) ##E.g. (<Cell 'Sheet1'. A1>,)  
        print(cell.value) ##E.g. Order Records
        cell.value = first_value 

wb2 = load_workbook('Example.xlsx')
sheets = wb2.sheetnames ##list of sheetnames
for i,sheet in enumerate(sheets): ##for each sheet
    ws = wb2[sheets[i]]
    range_list = ws.merged_cell_ranges
    for _range in range_list:
        first_cell = ws[_range.split(':')[0]] #first cell of each range
        last_cell = ws[_range.split(':')[1]]
        rows = ws[_range] #big set of sets; each cell within each range
        fill_in(list(rows),first_cell,last_cell)   

For reference, rows look like this:
((<Cell 'Sheet1'. A1>, <Cell 'Sheet1'. B1>, <Cell 'Sheet1'. C1>, <Cell 'Sheet1'. D1>, <Cell 'Sheet1'. E1>),)

This is what a new Excel worksheet looks like: the first 7 rows become cluttered.

Results of Upper Excel sheet

Considering my code above, what can I include/do to skip the first 7 rows of the Excel worksheet or exclude these rows from being merged?

Solution

merged_cell_ranges is a list, so you only need to start iterating after index 30 (6 rows * 5 columns).

for _range in range_list[30:]:

Related Problems and Solutions