The max_row function returns a value higher than it should be (the largest row that has a value in it is row 7, but max_row returns 10), and if I try iterating through a column to find the first row that has nothing in it I get the same value as max_row.
This would be easier to understand if you work with excel on java.
Excel cell have properties which define them as active or inactive. If you enter a value to a cell then delete the value, the cell still remains active.
max_row returns the row number of the last active cell, hence you get 10 rather than 7 even if the sheet now have data only till row 7 it may once have data till 10.
Manually you can clear the cell (Editing->Clear->Clear All) for the cell in excel making it inactive again. Not sure how to do the same via code in python.
How do I find the max row in Openpyxl