0

我正在使用xlrdpython 包来生成我的 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?。正好适合财务部门。

谢谢!

4

2 回答 2

2

这是一个简单的迭代版本,应该处理任意列号,改编自此答案的 C# 代码:

如何将列号(例如 127)转换为 excel 列(例如 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-indexed,但在替换它之前我需要更多地考虑算法。

于 2013-11-06T18:41:40.170 回答
1

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

于 2013-11-06T18:29:45.587 回答