使用Python在Excel中计算公式

时间:2009-07-12 19:36:54

标签: python excel formula

我想使用Python在Excel中插入计算。 通常,可以通过将公式字符串插入相关单元格来完成。 但是,如果我需要为整列计算多次公式 必须为每个单独的单元格更新公式。例如,如果我需要 计算两个单元的总和,然后对于单元C(k),计算将是A(k)+ B(k)。 在excel中,可以计算C1 = A1 + B1,然后自动扩展 通过从C1向下拖动鼠标进行计算。 我的问题是:是否可以使用Python进行相同的操作,即仅在一个单元格中定义公式,然后使用Excel功能扩展整个列/行的计算?

提前谢谢你, 武

6 个答案:

答案 0 :(得分:3)

Roberto 所述,您可以使用 xlwt 和可信赖的for循环:

import xlwt

w = xlwt.Workbook()
ws = w.add_sheet('mysheet')

for i in range(10):
    ws.write(i, 0, i)
    ws.write(i, 1, i+1)
    ws.write(i, 2, xlwt.Formula("$A$%d+$B$%d" % (i+1, i+1)))

w.save('myworkbook.xls')

答案 1 :(得分:0)

如果您使用的是COM绑定,那么您只需在Excel中录制宏,然后将其转换为Python代码即可 如果您使用的是xlwt,则必须在python中使用普通循环。

答案 2 :(得分:0)

萨莎,

从宏中翻译的Python代码如下所示:

startCell = mySheet.Range("M6")
wholeRange = mySheet.Range("M6:M592")
startCell.FormulaR1C1 = "=R[-1]C[-7]/RC[-10]*R[-1]C"
startCell.AutoFill(Destination=wholeRange)

没有测试过,但我经常在工作中写这个。如果它不起作用,请告诉我。

答案 3 :(得分:0)

如果你想在水平方向上迭代,这是我使用的一个函数。 0 - > a,26 - > aa,723 - > aav

def _num_to_let(num):
        if num > 25:
            return _num_to_let(num/26-1) + chr(97+ num % 26)
        return chr(97+num)

答案 4 :(得分:0)

如果你想在xlwt中迭代列(在公式中),你可以使用xlwt中的Utils模块,如下所示:

from xlwt import Utils
print Utils.rowcol_pair_to_cellrange(2,2,12,2)
print Utils.rowcol_to_cell(13,2)
>>>
C3:C13
C14

答案 5 :(得分:0)

使用COM包装库之一将允许您使用以Python编写的用户定义函数。这是xlwingsPyXll的域。

FlyingKoala也可以这样做,因为它是xlwings的扩展。 FlyingKoala增加了(即时)读取Excel函数并将其转换为Python代码并使用Python评估方程的功能。