Как записать данные в excel без перезаписи

Я использую некоторое условие для df, и все варианты, которые я пытаюсь записать в один файл excel (и на один лист). Я использую код из вопроса, мой ДФ

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)

но он перезаписывает мой файл. Что не так?


person Arseniy Krupenin    schedule 06.07.2016    source источник


Ответы (1)


Я не думаю, что вы можете обновить содержимое ячейки. Вы можете открыть файл для чтения или открыть новый файл для записи. Я думаю, вам нужно создать новую книгу, и каждую ячейку, которую вы читаете, если вы решите не изменять ее, запишите ее в свою новую книгу. В вашем примере кода вы перезаписываете 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')

Я нашел их по следующим ссылкам: ">здесь и здесь

person sathish    schedule 06.07.2016