excel - 通过 Win32com 从 Python 到 Excel 的 Bloomberg 公式
问题描述
所以这是一个大程序,我正在尝试自动化许多任务,但这条线让我很头疼。我正在使用 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=', '=')
所以当我把它写下来时,我确保它不是一个公式,然后我把它变成一个公式,它工作正常。
仍在尝试理解,因为这似乎不是最好的方法。
谢谢
解决方案
推荐阅读
- oracle-cloud-infrastructure - 如何将 Cloud Flare 的 ips 添加到 Oracle 云基础设施白名单
- ios - Apple APNs 推送通知不起作用
- matlab - 有人可以帮助我使用 Matlab 中的更新功能将值移动到 MySQL 吗?
- api - 使用airtable api从仅香橼行中获取数据
- c - LuaJIT 未定义的引用
- google-apps-script - 使用 QUERY 链接动态和手动数据 i Google 表格
- logstash - 如何将所有 ECS 服务日志发送到 LogStash
- php - cs购物车中的产品变量和架构是什么
- apache2.4 - mod_evasive 在 Ubuntu 18.04 上的 Apache 2.4.48 中不起作用
- flutter - 如何在 HERE Maps (Flutter) 上向地图标记添加弹出窗口