【发布时间】:2021-03-05 17:44:48
【问题描述】:
我正在寻找一种使用 openpyxl 使合并单元格可过滤的方法。
例如过滤以下工作簿中的名字“John”:
应该返回前三行: 而不是只返回第一行(默认的 excel 行为):
问题在于,默认情况下,合并范围仅在范围的左上角单元格中包含一个值: Default merged cell values
使用 openpyxl 是否可以有效地覆盖合并单元格中的 None 值,使其可过滤? Desired Merged cell values
作为参考,您已经可以按照此处的答案使用宏或手动格式化创建可过滤的合并单元格:https://stackoverflow.com/a/49817670/14251756
我已经尝试使用下面的脚本覆盖 none 值,但得到错误 AttributeError: 'MergedCell' object attribute 'value' is read-only
import openpyxl
wb = openpyxl.load_workbook("Workbook")
ws = wb['Worksheet']
#Get list of ranges of merged cells
merged_cell_ranges = ws.merged_cells.ranges
merged_cell_ranges = list(map(str,merged_cell_ranges))
#Iterate through ranges and write top merged cell value to empty cells
for merged_range in merged_cell_ranges:
for row in ws[merged_range]:
for cell in row:
cell.value = ws[merged_range.split(':')[0]].value
【问题讨论】:
标签: python python-3.x excel openpyxl