如何在没有覆盖的情况下将数据写入excel

时间:2016-07-06 09:29:29

标签: python excel pandas

我对df使用了一些条件,我尝试将所有变种写入一个excel文件(以及一个Sheet)。 我使用代码from question,我的df是

for i, (id, date, url, id1, date1) in enumerate(zip(ids, dates, urls, ids1, dates1)):
    df_upd = df[(df['ID'] == ids1[i]) & (df['used_at'] < (dates1[i] + dateutil.relativedelta.relativedelta(days=5)).replace(hour=0, minute=0, second=0)) & (df['used_at'] > (dates1[i] - dateutil.relativedelta.relativedelta(months=1)).replace(day=1, hour=0, minute=0, second=0))]

之后我使用代码

book = load_workbook('report_buy.xlsx')
writer = pd.ExcelWriter('report_buy.xlsx', engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
df_upd.to_excel(writer)

但它覆盖了我的文件。那有什么不对?

1 个答案:

答案 0 :(得分:0)

我认为你不能更新单元格内容。您可以打开要读取的文件,或打开要写入的新文件。我认为您必须创建一个新的工作簿,并且您阅读的每个单元格,如果您选择不修改它,请将其写入您的新工作簿。在您的示例代码中,您使用wb(用于写入)覆盖wb(用于读取)。将其拉出for循环,为其指定一个不同的名称。

import openpyxl
xfile = openpyxl.load_workbook('test.xlsx')
sheet = xfile.get_sheet_by_name('Sheet1')
sheet['A1'] = 'hello world'
xfile.save('text2.xlsx')

我在以下链接中找到了这些内容 herehere