彭博通过Win32com从Python到Excel的公式

时间:2018-05-16 13:06:17

标签: excel python-3.x win32com

所以这是一个很大的程序,我试图自动执行许多任务,但这里是杀死我的线。我使用Python 3.5.5和Win32com来连接Python和Excel。

ws.Cells(i,j).Value = '=BDP("' + tick.lstrip().rstrip() + \
                      '";"CUST_TRR_RETURN_HOLDING_PER";' + \
                      '"CUST_TRR_Start_DT='+ (day - dt.timedelta(1)).strftime("%Y%m%d") + \
                      '";"CUST_TRR_END_DT=' + day.strftime("%Y%m%d") + \
                      '";"CUSTOM_TOTAL_RETURN_START_PRICE=' + str(round(sp,2)) + \
                      '";"CUSTOM_TOTAL_RETURN_END_PRICE=' + str(round(ep,2)) +'")'

所以,如果我将开头改为

ws.Cells(i,j).Value = 'f=bdp....'

因此它不再是Excel公式,没有任何问题都可以正确地进入Excel。然后我可以手动删除 f ,公式按预期计算。但是,当我按原样运行代码时,我收到一条错误消息,指出发生了异常并且代码停止了。我尝试了一个简单的公式'=2*6',它运作正常 我还尝试了Cells.Formula而不是Cells.Value,但我遇到了同样的问题。

这非常令人沮丧,因为它是我项目的最后一部分。之前和之后的所有内容都是有用的,所以任何帮助都会非常感激。

修改

即使是更奇怪,我只是试过这个并且它有效

ws.Cells(i,j).Value = 'f=BDP("' + tick.lstrip().rstrip() + \
                      '";"CUST_TRR_RETURN_HOLDING_PER";' + \
                      '"CUST_TRR_Start_DT='+ (day - dt.timedelta(1)).strftime("%Y%m%d") + \
                      '";"CUST_TRR_END_DT=' + day.strftime("%Y%m%d") + \
                      '";"CUSTOM_TOTAL_RETURN_START_PRICE=' + str(round(sp,2)) + \
                      '";"CUSTOM_TOTAL_RETURN_END_PRICE=' + str(round(ep,2)) +'")'
ws.Cells(i,j).Replace('f=', '=')

所以当我把它写下来时,我确保它不是一个公式,然后我把它作为一个公式,它工作正常。

仍然试图理解,因为这似乎不是最好的方法。

由于

0 个答案:

没有答案