【问题标题】:Extract the data and modify an existing excel with openpyxl提取数据并使用 openpyxl 修改现有的 excel
【发布时间】:2023-03-04 00:52:01
【问题描述】:

我想通过 openpyxl 修改现有的 excel。 目的是获取财务数据并将其插入特定列中,以便执行计算。

我希望第 1 列显示开盘价

我写了这段代码。

import datetime as dt
import pandas as pd
import pandas_datareader.data as web

from openpyxl import load_workbook

start = dt.datetime(2018, 1, 1)
end = dt.datetime(2019, 1, 1)

ticker = "AAPL"

yahoo = web.DataReader(ticker, 'yahoo', start, end)

#print(yahoo['Open'])


wb = load_workbook('aa.xlsx')
ws = wb.active
ws.title = "Change Sheet__"

ws["A"].value(aaa)

wb.save("aa.xlsx")

错误是:

Traceback(最近一次调用最后一次): 文件“C:\Users\Davide\Desktop\aa.py”,第 23 行,在 ws["A"].value(aaa) AttributeError: 'tuple' 对象没有属性 'value'

【问题讨论】:

  • 代码有效吗?什么错误?
  • Traceback(最近一次调用最后一次):文件“C:\Users\Davide\Desktop\aa.py”,第 23 行,在 ws["A"].value(aaa) AttributeError:“元组”对象没有属性“值”
  • 你能用这个例子编辑我的代码吗?我尝试了,但它不起作用
  • 你认为ws['A']是什么?

标签: python pandas openpyxl pandas-datareader


【解决方案1】:

如果我添加这个

n=1
for n in range(1, 100):
    ws.cell(row=n, column=1).value(4)
    n+1

它将所有 4 个粘贴到 A 列中

但我希望粘贴整个 yahoo ['Open'] 数组

【讨论】:

    【解决方案2】:

    IIUC,这应该可行:

    from openpyxl import load_workbook
    wb = load_workbook('aa.xlsx')
    ws = wb['Sheet1'] # choose your sheet.
    

    然后我们决定用您的 df 替换您的列。

    col_to_replace = 'A'
    for index, row in df.iterrows():
        cell = f'{col_to_replace}{index+2}'
        ws[cell] = row[0]
    
    wb.save('aa.xlsx')
    

    【讨论】:

    • 或者直接使用库提供的方法。
    • @Charlie Clark 你能举个例子吗?根据我使用 pandas 的经验,它通常会覆盖破坏任何相关公式的 excel 表格,尽管我已经有一段时间没有做过任何基于 excel 的事情了。
    • 我从来没有提到过熊猫。 openpyxl 工作表有 iter_rows()iter_cols() 方法,如果他们阅读文档,OP 会知道这些方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多