如何根据前一个单元格增加 openpyxl 中的值?
How can I increment values in openpyxl, based on the previous cell?
这个例子不会工作(+= in for loop)
,但它显示了我想要实现的目标:
import openpyxl
wb = openpyxl.Workbook()
sheet = wb.active
for a,b,c,d,e,f,g in sheet.iter_rows(min_col=1, max_col=7, min_row=2, max_row=8):
a.value += 1
b.value += 1
c.value += 2
d.value += 3
e.value += 4
f.value += 5
g.value += 6
wb.save("multi.xlsx")
我的目标是根据前一个单元格增加每次迭代的值。所以 a.value
的结果是:1,2,3,4,5,6
,d.value
3,6,9,12,15,18
等等。实现此目标的最简单方法是什么?
您可以使用简单的数学运算来完成此操作。定义每列每行增加多少(记住每列都有一个数字索引),
column_amounts = {
1 : 1,
3 : 2,
}
然后将单元格值设置为(行 * 数量)。这样,我们可以将相同的逻辑应用于每一行和单元格,但以简单的方式更改每列的金额。
for a,b,c,d,e,f,g in sheet.iter_rows(min_col=1, max_col=7, min_row=2, max_row=8):
a.value = column_amounts[a.col_idx] * a.row
c.value = column_amounts[c.col_idx] * b.row
您也可以将其简化为一个小的辅助函数:
def amount_at_cell(cell):
return column_amounts[cell.col_idx] * cell.row
for a,b,c,d,e,f,g in sheet.iter_rows(min_col=1, max_col=7, min_row=2, max_row=8):
a.value = amount_at_cell(a)
c.value = amount_at_cell(c)
有关处理单元格的 API 文档:https://openpyxl.readthedocs.io/en/latest/api/openpyxl.cell.cell.html?highlight=Cell
这个例子不会工作(+= in for loop)
,但它显示了我想要实现的目标:
import openpyxl
wb = openpyxl.Workbook()
sheet = wb.active
for a,b,c,d,e,f,g in sheet.iter_rows(min_col=1, max_col=7, min_row=2, max_row=8):
a.value += 1
b.value += 1
c.value += 2
d.value += 3
e.value += 4
f.value += 5
g.value += 6
wb.save("multi.xlsx")
我的目标是根据前一个单元格增加每次迭代的值。所以 a.value
的结果是:1,2,3,4,5,6
,d.value
3,6,9,12,15,18
等等。实现此目标的最简单方法是什么?
您可以使用简单的数学运算来完成此操作。定义每列每行增加多少(记住每列都有一个数字索引),
column_amounts = {
1 : 1,
3 : 2,
}
然后将单元格值设置为(行 * 数量)。这样,我们可以将相同的逻辑应用于每一行和单元格,但以简单的方式更改每列的金额。
for a,b,c,d,e,f,g in sheet.iter_rows(min_col=1, max_col=7, min_row=2, max_row=8):
a.value = column_amounts[a.col_idx] * a.row
c.value = column_amounts[c.col_idx] * b.row
您也可以将其简化为一个小的辅助函数:
def amount_at_cell(cell):
return column_amounts[cell.col_idx] * cell.row
for a,b,c,d,e,f,g in sheet.iter_rows(min_col=1, max_col=7, min_row=2, max_row=8):
a.value = amount_at_cell(a)
c.value = amount_at_cell(c)
有关处理单元格的 API 文档:https://openpyxl.readthedocs.io/en/latest/api/openpyxl.cell.cell.html?highlight=Cell