我想合并第2列(带有“description”)和第1列(带有“name”):要合并的行数相同,但当使用merge_range时,我在列2中得到了空值。
这是我的代码。
my_list = [
{'field1': [
{'name': 'value1', 'description': ""
},
{'name': 'value1', 'description': "this is descr..."
},
{'name': 'value1', 'description': ""
},
]
},
]
row = 206
for record in my_list:
row_mem = row
for rec in record['field1']:
sheet.write(row, 2, rec['description'])
row += 1
sheet.merge_range(row_mem, 1, row - 1, 1, rec['name'])
结果:
将sheet.write(row, 2, rec['description'])
替换为
sheet.merge_range(row_mem, 2, row - 1, 2, rec['description'])
我得到了这个结果:
但我想这样展示:
如何合并列2并在合并时获得非空值。
有什么需要帮忙的吗?谢谢。
1条答案
按热度按时间o2rvlv0m1#
代码示例中的缩进无效,我假设
row = 206
和for record in my_list:
行应该与my_list=
具有相同的缩进,for record ...
下面的行保留与该行相同的缩进。你的代码,因为它是;对于
'description'
列,要保留的值在第二个单元格中,因此合并的3个单元格是空字符串,字符串值,空字符串。在通常情况下,当合并单元格时,左上角的单元格坐标和值被保留,其他单元格中的任何值都将丢失。* 因此,如果合并这3个单元格,则结果是具有空字符串 * 的单元格。但是,您的代码不会按原样合并单元格,从说明文本中,这是通过替换
与
因为这意味着你在每个循环中合并描述列,我希望这会给予你一个
warning
,因为你试图在第一个循环中合并一个单元格,然后在第二个循环中合并两个单元格,空字符串&字符串值。因此,如上所述,单元格将合并,保留左上角的值,这是空字符串。不知道你的最终目标是什么,但我认为最好像
'name'
单元格一样,把你想要的单元格和值合并在一起。这个循环可能不是必需的,但是假设列表
mylist
中有几个字段,那么像这样的东西可能是更好的选择。为了清楚起见,我在
my_list
中添加了第二个字段,称为field2
,原始字段称为field1
。我使用了范围计数来跟踪行。范围在206处开始,并且对于要合并的三行以3为步长。范围的最大值是任意数字。它不需要特定,只要足够大以包含所使用的行,my_list
循环将控制循环何时结束。在第一个循环周期的
row is set to 206
和name
和description
被写入合并单元格的基础上的行和设置列1和2。在第二个循环周期row is now 209
和下一个字段被写入合并单元格的基础上,行和设置列1和2。请参见示例屏幕截图。
给定示例的输出
如果您只有一个字段要添加,那么请删除循环,只使用
sheet.merge_range
行。