我只是试过了,它似乎适用于您的示例数据:
all_data = []
excel = xlrd.open_workbook(excel_dir+ excel_file)
sheet_0 = excel.sheet_by_index(0) # Open the first tab
prev_row = [None for i in range(sheet_0.ncols)]
for row_index in range(sheet_0.nrows):
row= []
for col_index in range(sheet_0.ncols):
value = sheet_0.cell(rowx=row_index,colx=col_index).value
if len(value) == 0:
value = prev_row[col_index]
row.append(value)
prev_row = row
all_data.append(row)
返回
[['2', '0', '30'], ['2', '1', '20'], ['2', '5', '52']]
它跟踪上一行的值,如果当前行的相应值为空,则使用它们。
请注意,上面的代码不会检查给定的单元格是否实际上是单元格合并集合的一部分,因此在该单元格确实为空的情况下,它可能会复制先前的值。不过,这可能会有所帮助。
随后,我找到了一个文档页面,该页面讨论了一种merged_cells
属性,可以用来确定合并的各个单元格范围中包含的单元格。文档说它是“ 0.6.1版的新功能”,但是当我尝试将其与xlrd-0.9.3一起使用时,pip
出现了错误
NotImplementedError:formatting_info =还没有实现
我并不特别倾向于开始使用不同版本的xlrd来测试该merged_cells
功能,但是如果以上代码不足以满足您的需求并且遇到与我相同的错误,也许您可??能会对这样做感兴趣formatting_info=True
。