有一个a.xlsx
文件,为92427行(不包括标题)。我打开a.xlsx
,手动删除许多行(保留前27行)并另存为a_sample.xlsx
作为样本输入。
我使用以下代码从a_sample.xlsx
中读取数据。
from openpyxl import load_workbook
wb = load_workbook(file_workbook, read_only=True)
ws = wb.sheetnames[0] # wb.get_sheet_by_name(wb.get_sheet_names()[0])
for idx, row in enumerate(ws.iter_rows(row_offset=1)): # row_offset=1, skip the header
print(idx)
输出的最后一行是92426
,而不是26
。可能是什么原因?
我使OpenPyXL遍历以空行结尾的行:
for idx, row in enumerate(ws.iter_rows(row_offset=1)):
if row[0].value is None:
break
某处可能有非空单元格。请查看ws.max_row
和ws.max_column
,然后在文件中手动检查单元格[ws.max_row, ws.max_column]
。
如上所述,没有关键字row_offset
,但是您可以使用类似的内容
for idx, row in enumerate(ws.iter_rows(min_row=1, max_col=3, max_row=20)):
其中max_row <= ws.max_column
。