计算公式在Excel中使用Python(Calculating formulae in Excel

2019-09-18 10:23发布

我想使用Python在Excel中插入计算。 一般来说,可以通过插入公式字符串到相关的细胞来完成。 然而,如果我需要多次以计算公式整个列式必须为每个单独的小区更新。 例如,如果我需要计算两个单元的总和,则对于电池C(k)的计算将是第(k)+ B(k)的。 在Excel中也能够计算C1 = A1 + B1,然后通过从C1拖动鼠标向下自动扩展的计算。 我的问题是:是否有可能同样的事情与Python,即只在一个单元格定义公式,然后使用Excel功能来扩展计算整个列/行?

谢谢你在前进,萨沙

Answer 1:

正如罗伯特提到,您可以使用xlwt和环一个值得信赖的:

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')


Answer 2:

如果您正在使用COM绑定,那么你可以简单地记录在Excel中的宏,然后将它翻译成Python代码。
如果你正在使用xlwt,你不得不求助于在python正常循环..



Answer 3:

萨沙

从您的宏翻译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)

没有测试过,但我写这篇文章经常在工作中。 让我知道,如果它不能正常工作。



Answer 4:

如果你想在水平方向上进行迭代,这里是我使用的功能。 0 - >一个,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)


Answer 5:

如果你想在xlwt迭代的列(公式),可以使用utils的模块,这样从xlwt:

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


文章来源: Calculating formulae in Excel with Python