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.
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 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(':')] #first cell of each range last_cell = ws[_range.split(':')] rows = ws[_range] #big set of sets; each cell within each range fill_in(list(rows),first_cell,last_cell)
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.
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?
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:]: