注册 登录
编程论坛 Python论坛

python操作excel合并单元格问题,求解!

小石头936 发布于 2019-12-18 23:38, 3192 次点击
想将excel表单里的所有合并单元格,取消合并。
for merg in ws.merged_cells:
    ws.unmerge_cells(str(merg))

逻辑意图为:逐个取ws表单的合并单元格,用unmerge_cells()进行取消。
但结果只取消第一个合并单元格后,就跳出循环了。不知道什么缘故。
后来我改了个for循环,解决了,但上面的代码问题到底出在哪?没搞清,求高手指点。
下面是成功的方法:
    n = list(s1.merged_cells)
    for i in range(len(n)):
        s1.unmerge_cells(str(n[i]))
7 回复
#2
fall_bernana2019-12-20 09:52
以下是引用小石头936在2019-12-18 23:38:03的发言:

想将excel表单里的所有合并单元格,取消合并。
for merg in ws.merged_cells:
    ws.unmerge_cells(str(merg))
逻辑意图为:逐个取ws表单的合并单元格,用unmerge_cells()进行取消。
但结果只取消第一个合并单元格后,就跳出循环了。不知道什么缘故。
后来我改了个for循环,解决了,但上面的代码问题到底出在哪?没搞清,求高手指点。
下面是成功的方法:
    n = list(s1.merged_cells)
    for i in range(len(n)):
        s1.unmerge_cells(str(n))

上面的用法是迭代器,下面是list 我猜测你ws.unmerge_cells(str(merg)) 影响了 ws.merged_cells的迭代.你这点代码看不了.具体你可以打印具体的内容查看下
#3
小石头9362019-12-20 17:00
回复 2楼 fall_bernana
就只有这点代码,就是试验取消合并单元格功能的,没有其他的了。
#4
fall_bernana2019-12-20 17:05
回复 3楼 小石头936
我的意思是整个程序的代码和测试文件.至少要我这里能运行起来才能帮着测试
#5
小石头9362019-12-23 16:27
回复 4楼 fall_bernana
只有本站会员才能查看附件,请 登录
明白了,这是文件和测试表格,麻烦帮忙看看,里面标注掉的3行代码,是用list方法成功实现的方法,
#6
fall_bernana2019-12-23 16:59
回复 5楼 小石头936
附件有问题,打不开
#7
小石头9362019-12-23 18:03
回复 6楼 fall_bernana
只有本站会员才能查看附件,请 登录
麻烦再试试看
#8
小石头9362019-12-23 20:18
经过多次试验,发现ws.unmerge_cells(str(merg)) 对 ws.merged_cells的迭代是造成影响的结果是:间隔一个被执行unmerge_cells,敬请老师帮忙讲解原理。
1