如何将数据框附加到现有的 excel 文件

how to append data frame to existed formulated excel file

如果您有一个公式化的 excel 文件,现在想通过 python 附加数据框,那么如何..

我使用了这段代码但没有得到输出

mypath="C:\Users\egoyrat\Desktop\smt tracker\Swap Manual.xlsx" book = load_workbook(mypath) ws= book['Main'] for row_data in now_append:在此处输入代码 ws.append(row_data)

如果你按单元格写入文件,你可以做到。下面是代码... 假设,通过公式化,你的意思是单元格有格式(颜色,字体等)并且你想在不改变单元格格式的情况下写入数据)

import numpy as np
#Create random 10x3 dataframe
df = pd.DataFrame(np.random.randint(0,100,size=(10, 3)), columns=list('ABC'))

wb = openpyxl.load_workbook('output.xlsx', read_only=False)
ws=wb['Sheet2']

#Write header
for col in range(df.shape[1]):
    ws.cell(1, col+1).value = df.columns[col]

#Write the data
for row in range(df.shape[0]):
    for column in range(df.shape[1]):
        ws.cell(row=row+2, column=column+1).value = df.iloc[row,column]
wb.save('output.xlsx')
wb.close()

输出 - 写入前

写入数据后

选项 2 - 基于 Charlie Clark 的输入

这和上面做的一样,但是有点faster/better.....

import numpy as np
from openpyxl.utils.dataframe import dataframe_to_rows

df = pd.DataFrame(np.random.randint(0,100,size=(10, 3)), columns=list('ABC'))

wb = openpyxl.load_workbook('output.xlsx', read_only=False)
ws=wb['Sheet2']
rows = dataframe_to_rows(df, index=False)
for r_idx, row in enumerate(rows, 1):
    for c_idx, value in enumerate(row, 1):
        ws.cell(row=r_idx, column=c_idx, value=value)
        
wb.save('output.xlsx')
wb.close()