我正在使用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?
一样。完全适用于财务部门。
谢谢!
答案 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)
chr(65)=A
,因此您可能需要在列中添加64。如果你超越第26列,这当然会中断。