我正在尝试使用 xlrd 读取 Excel 与 Python 的合并单元格。
我的 Excel:(请注意,第一列合并了三行)
A B C
+---+---+----+
1 | 2 | 0 | 30 |
+ +---+----+
2 | | 1 | 20 |
+ +---+----+
3 | | 5 | 52 |
+---+---+----+
在此示例中,我想将第一列的第三行读取为等于 2,但它返回 ''
。你知道如何获得合并单元格的值吗?
我的代码:
all_data = [[]]
excel = xlrd.open_workbook(excel_dir+ excel_file)
sheet_0 = excel.sheet_by_index(0) # Open the first tab
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
row += "{0} ".format(value)
split_row = row.split()
all_data.append(split_row)
我得到什么:
'2', '0', '30'
'1', '20'
'5', '52'
我想得到什么:
'2', '0', '30'
'2', '1', '20'
'2', '5', '52'
原文由 Antoine 发布,翻译遵循 CC BY-SA 4.0 许可协议
我刚刚试过这个,它似乎适用于您的样本数据:
返回
它跟踪前一行的值,并在当前行的相应值为空时使用它们。
请注意,上面的代码不会检查给定的单元格是否实际上是一组合并的单元格的一部分,因此在单元格应该为空的情况下,它可能会复制以前的值。不过,它可能会有一些帮助。
附加信息:
我随后找到了一个文档页面,其中讨论了一个
merged_cells
属性,可以使用该属性来确定合并单元格的各种范围中包含的单元格。文档说它是“版本 0.6.1 中的新功能”,但是当我尝试将它与安装的 xlrd-0.9.3 一起使用时pip
我得到了错误我并不是特别倾向于开始追逐不同版本的 xlrd 来测试
merged_cells
功能,但如果上面的代码不足以满足您的需求并且您遇到相同的错误,也许您可能有兴趣这样做我用formatting_info=True
做的。