循环python openpyxl。如何在单元格中添加循环

时间:2017-08-24 10:12:28

标签: python loops cell openpyxl

我正在寻找任何人都可以帮我在Python上加载xlsx文件中进行循环。

我需要对2个单元格进行一些划分,我可以做到1个结果,但问题是我需要用超过10000个数据执行此操作。我想也许有一个循环,我们可以做到但我不知道如何。

更清楚,这是第一个加载xlsx文档的两个图像,第二个是我的结果:

Before

After

from openpyxl import load_workbook
wb = load_workbook(filename='Data.xlsx')
ws = wb['Data']

ws.auto_filter.ref = "A1:E1"

ws["E1"] = 'Fillrate%'

ws["E2"] = round(((ws['C2'].value)/(float(ws['B2'].value))*100),2)
ws["E3"] = round(((ws['C3'].value)/(float(ws['B3'].value))*100),2)
ws["E4"] = round(((ws['C4'].value)/(float(ws['B4'].value))*100),2)
ws["E5"] = round(((ws['C5'].value)/(float(ws['B5'].value))*100),2)
ws["E6"] = round(((ws['C6'].value)/(float(ws['B6'].value))*100),2)


wb.save("Analized_Data.xlsx")

2 个答案:

答案 0 :(得分:1)

我很想让Excel进行计算并使用公式。但要回答你的问题:使用ws.iter_cols(min_col=5, min_row=2, max_col=5)获取E列中的所有单元格并循环遍历它。

答案 1 :(得分:0)

是的,你可以使用循环。

首先获取行数,然后使用range()函数进行迭代,如下所示:

max_row = ws.max_row

for index in range(1, max_row + 1):
    ws["E{0}".format(index)] = round((ws['C{0}'.format(index)].value /
                                      float(ws['B{0}'.format(index)].value) * 100), 2)