簡體   English   中英

用於刷新電子表格的 BLOOMBERG 數據的 python 腳本

[英]python script to refresh spreadsheet's BLOOMBERG data

我有一堆 excle 工作表,它們提取了我在 Python 中用於各種事情的Bloomberg 日終數據。 我的問題如下:

有沒有辦法告訴工作表刷新彭博數據?

傳統的刷新都不起作用,就像在excel中按f9不會刷新它們一樣。 我知道如何做到這一點的唯一方法是單擊(在 excel 中)bloomberg 選項卡下的刷新圖標,兩個箭頭。 我很想自動化它。

這就是我現在所擁有的:

import win32com.client
import time

def refr_sheet():
    app_global = win32com.client.Dispatch("Excel.Application")
    global_sprdsheet = app_global.Workbooks.open('C:\\Users\\Ako\\Desktop\\ako_files\\work_sheets\\global.xlsx')
    global_sprdsheet.RefreshAll()
    time.sleep(12)
    global_sprdsheet.Save()
    global_sprdsheet.Close()
    app_global.Quit()

這適用於重新計算一般的 excel 計算公式,但不會刷新Bloomberg(=BHD 類型)公式。

歡迎任何建議!

有兩個選項: 簡單的解決方案在工作表中創建宏(需要制作文件 xlsm 而不是 xlsx)

子 refresh_bbg()

'取決於您的設置,可能值得檢查 Bloomberg api 是否安裝在此處,如果沒有則安裝。

Application.Run ("bloombergui.xla!RefreshEntireWorkbook")

結束子

然后在python中

global_sprdsheet.Application.Run("global.xlsm!refresh_bbg")

但我認為更好的解決方案是通過 tia 或 pdblp 在 python 中進行 bbg 數據收集。 然后將數據寫入文件。 根據我的經驗,這更可靠。

我已經使用win32com打開excel並將其帶到頂部並開始一個一個地按下按鈕,延遲1秒,然后保存並關閉它。

import time
import pyautogui
import win32com.client
from win32gui import SetForegroundWindow
xl = win32com.client.DispatchEx("Excel.Application")
wb = xl.workbooks.open("C:/file.xlsx")
xl.Visible = True
SetForegroundWindow(xl.hwnd)
time.sleep(3)
pyautogui.typewrite(['alt', 's', 'r', 'a'], interval=1)
time.sleep(3)
wb.Close(SaveChanges=1)
xl.Quit()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM