簡體   English   中英

"使用實時 Python 數據更新 Excel 電子表格"

[英]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 腳本時更新數據。

設置:

  1. 將您的數據框輸出到 csv/database 或其他 Excel 可讀格式
  2. 設置您的 python 文件以按計划運行(通過計划或延遲循環)
  3. 創建從 Excel 到 Python 輸出文件/數據庫的數據連接
  4. 基於 Excel 中的表格構建數據透視表
  5. 刷新 Excel 中的數據連接/數據透視表以獲取新數據

(感謝這是一個老問題)。 使用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.

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