我正试图把一些特定的细胞转移到一个指定的位置。如图所示,希望将单元格D3中的数据移动到E2,D5移动到E4,.就这样吧。它可以和开吡醇一起使用吗?任何建议都将不胜感激!!单击以查看图像
这是我到目前为止所得到的。它按规定起作用了。
wb=xl.load_workbook(datafile)
ws=wb['Sheet1']
#insert a new column #5
ws.insert_cols(idx=5,amount=1)
wb.save(datafile)
mr=ws.max_row
#move cells
for i in range (1,mr+1):
v=ws.cell(row = i+1,column=4)
ws.cell(row=i,column =5).value=v.value
wb.save(datafile)
wb.close
谢谢你的帮助。
我修改了密码,效果很好。然后,我想删除不需要的行,但它没有工作。看起来它进入了一个无限的循环。代码显示在这里。我做错什么了?
wb=xl.load_workbook(datafile)
ws=wb['Sheet1']
#insert a new column #5
ws.insert_cols(idx=5,amount=1)
#Calculate total number of rows
mr=ws.max_row
#move cells
for i in range (2,mr,2):
ws.cell(row=i,column=5).value=ws.cell(row=i+1,column=4).value
#delete unwanted rows
for i in range (2,mr,2):
ws.delete_rows(idx=i+1,amount=1)
wb.save(datafile)
发布于 2022-11-29 08:05:08
这是一个很好的努力。
下面是一些需要帮助的注释,以及关于如何跳过一行的注释。
若要跳过行,可以在范围内设置步进。步进是范围参数中的最后一个数字。所以
range(2, mr, 2)
意思是'i‘从2开始,以2的增量增加到最大值ws.max_row。
在这种情况下,由于最大值为7,我将为2、4和6。
..。
wb = xl.load_workbook(datafile)
ws = wb['Sheet1']
# insert a new column #5
ws.insert_cols(idx=5, amount=1)
# wb.save(datafile) # <--- not necessary just save at the end
mr = ws.max_row
# move cells
# Move and delete the rows by making the changes from the bottom up
for i in reversed(range(2,mr,2)):
ws.cell(row=i, column=5).value = ws.cell(row=i + 1, column=4).value
ws.delete_rows(idx=i + 1, amount=1)
wb.save(datafile)
# wb.close # <-- Not needed, should have brackets anyway
#
删除的问题是:当您删除一行时,下面的行会立即向上移动。因此,如果删除第2行,那么第3行就变成了第2行,这意味着从顶部开始,按照这样的模式向下删除通常是行不通的。
要删除未完成的行,可以更容易地反向运行循环,因此删除一行不会影响您尚未更改的行。
https://stackoverflow.com/questions/74539605
复制相似问题