使用win32com的Python不会使用所需的加载项更新excel工作表

问题描述 投票:1回答:2

我正在尝试获取一个python脚本来创建一个具有公式的excel文件,该文件准备在工作簿打开时执行(它需要一个仅在excel中可用的加载项)。打开后,excel将计算公式,而python将关闭并保存文件。然后,我可以将这个excel文件用于其余的python脚本。但是,在手动打开python创建的excel文件之前,我无法获得执行公式的插件。

我已经尝试了各种方法来使win32com在加载所有加载项的情况下打开excel文件。但是,似乎没有一个起作用。

workbook = xlsxwriter.Workbook('C:/Users/ccraig/Desktop/QR Price_Bonds/t.xlsx')
worksheet1=workbook.add_worksheet()
worksheet2=workbook.add_worksheet()
worksheet1.write(1,1,'Hello')
worksheet1.write_formula('A2','=BDH(Sheet2!A1&"@TRAC Corp","TRADE",Sheet2!B2,Sheet2!BA2,"IntrRw=True","RPSCodes=S","RPTContra=S","Price=S","Type=S","Yield=S","Size=S","IndicatorCodes=S","CondCodes=S","QRM=S","Dir=V","cols=9;rows=312")')
worksheet2.write('A1','1730T0R50')
worksheet2.write('B2','8/7/2019')
worksheet2.write('A2','8/7/2019')
workbook.close()
xlapp = win32com.client.DispatchEx("Excel.Application")
xlapp.RegisterXLL('C:/blp/API/Office Tools/bofaddin.dll')
# for addin in xlapp.AddIns:
#     addin.Installed=True
wb = xlapp.Workbooks.Open('C:/Users/ccraig/Desktop/QR Price_Bonds/t.xlsx',None,False)
wb_addin = ('C:/blp/API/Office Tools/bofaddin.dll')
wb.RefreshAll()
xlapp.CalculateUntilAsyncQueriesDone()
wb.Save()
xlapp.Quit()

我没有任何错误。该文件已根据需要创建,但是直到我手动打开该文件后,该公式才会执行。

python win32com xlsxwriter bloomberg
2个回答
0
投票

我相信Excel中的Bloomberg API都需要.dll和xla。尝试添加:

xlapp.Workbooks.Open('C:\\blp\\API\\Office Tools\\BloombergUI.xla')

我不想测试您的代码,因为担心会达到我的每月数据限制,但是您的RegisterXLL是解决我的问题的关键。


0
投票
xlapp = win32com.client.DispatchEx("Excel.Application")
xlapp.RegisterXLL('C:/blp/API/Office Tools/bofaddin.dll')
xlapp.Workbooks.Open('C:\\blp\\API\\Office Tools\\BloombergUI.xla')
wb = xlapp.Workbooks.Open(filepath,None,False)
xlapp.Visible = True
wb_addin = ('C:/blp/API/Office Tools/bofaddin.dll')
wb.RefreshAll()
sleep(60)
wb.Save()
xlapp.Quit()

这里是工作代码。

© www.soinside.com 2019 - 2024. All rights reserved.