[英]Update Excel Spreadsheet with Real-Time Python Data
我對 Python 還是很陌生,主要目標是學習該語言以完全自動化一些流程並使用實時數據更新\/填充 Excel 電子表格。 有沒有辦法(例如通過 openpyxl)使用通過 python 包(如 pandas)或通過 BeautifulSoup 抓取的網絡提取的數據來更新特定單元格?
我已經有了必要的代碼來提取我在 Python 中的項目所需的數據系列,但我完全堅持如何將這些數據鏈接到 Excel。
import pandas as pd
import pandas_datareader.data as web
import datetime as dt
start = dt.datetime(2000,1,1)
end = dt.datetime.today()
tickers = [
"PYPL",
"BABA",
"SAP"
]
df = web.DataReader (tickers, 'yahoo', start, end)
print (df.tail(365)['Adj Close'])
Pandas 有一種將 Dataframe 導出到 Excel 的方法。 https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_excel.html
filename = "output.xlsx"
df.to_excel(filename)
一種選擇是按計划運行 Python 腳本並輸出為 .csv 或 Excel 可以鏈接到的另一種格式。 此選項允許在執行 python 腳本時更新數據。
設置:
(感謝這是一個老問題)。 使用xlOil 可以獲得<\/a>Excel 中的實時數據。 xlOil 允許您在 python 中非常輕松地定義 Excel RTD(實時數據)函數。 Excel 的 RTD 函數在正常計算周期之外運行,可以將數據推送到工作表上。
你的例子可以寫成:
import xloil, datetime as dt, asyncio
import pandas_datareader.data as web
start = dt.datetime(2000,1,1)
@xloil.func
async def pyGetTickers(names:list, fetch_every_secs=10):
while True:
yield web.DataReader(
names, 'yahoo', start, dt.datetime.now())
await asyncio.sleep(fetch_every_secs)
一種簡單的解決方案是使用xlwings
庫
import xlwings as xw
..
xw.Book(file_path).sheets['Sheet_name'].range('A1').value = df
這將通過 COM 將您的df
打印到 Excel 文件的單元格 A1 - 這意味着它實際上是在文件打開時寫入值。
希望這有幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.