如何使用公式计算Excel工作表中其他字段的值

时间:2013-11-06 18:21:10

标签: python excel excel-formula xlrd

我正在使用xlrd包来生成我的Excel报告。 对于某些字段,它们是来自其他字段的计算。 我正在使用

worksheet.write(1, 2,  '178', formatting )
worksheet.write(1, 3,  '100', formatting )
字段(1,4)

SUM of (1,2) and (1,3)

如果我使用了worksheet.write(1, 4, '=SUM(A1,B1)', formatting )

,我可以这样做

但在我的情况下,我使用数字(col, row)代替字母(A1)

我尝试了chr(1)+':1' - chr(1)+':2'

但似乎我得到的字母并没有反映数字。

任何想法都将受到高度赞赏!

我现在使用的解决方案是

value1 = '178'
value2 = '100'
worksheet.write(1, 2,  value1, formatting )
worksheet.write(1, 3,  value2, formatting )
worksheet.write(1, 4, value1+value2  , formatting )

但是当你看到I'm not using built in excel formulas时,excel用户将看不到值的来源。就像calculation used?一样。完全适用于财务部门。

谢谢!

2 个答案:

答案 0 :(得分:2)

这是一个简单的迭代版本,可以处理任意列号,在这个答案中改编自C#代码:

How to convert a column number (eg. 127) into an excel column (eg. AA)

def column_label(column_number):
    column_labels = []
    column_number = column_number + 1
    while column_number > 0:
        column_number, modulo = divmod(column_number - 1, 26)
        column_labels.append(string.uppercase[modulo])
    return ''.join(reversed(column_labels))

这需要一个0索引的列号,例如那些xlrd和xlwt使用。在构建名称之前,我不喜欢转换为1索引,但在更换之前我需要更多地考虑算法。

答案 1 :(得分:1)

ASCII中的

chr(65)=A,因此您可能需要在列中添加64。如果你超越第26列,这当然会中断。