Записать результат в тот же выходной файл excel

Я занимаюсь парсингом веб-страниц и каждый день записываю выходные данные фреймов данных в новую книгу Excel. Я хочу добавить результат каждого дня в уже существующий файл Excel, и я понятия не имею, как это сделать. Может ли кто-нибудь помочь мне с этим !!!

writer = pd.ExcelWriter('output'+dte.strftime("%Y-%m-%d")+'.xlsx')
for each in channel_id:
        start_time=0
        start_time = time.time()
        df = pd.DataFrame()
        a=get_all_video_in_channel(each)
        print(len(a))
        df=df.append(get_links(a),ignore_index=True)
        df = df.set_index('link').transpose()
        #print(df)
        df.to_excel(writer, 'Sheet'+str(count))
        writer.save()
        print("--- %s seconds ---" % (time.time() - start_time))
        count=count+1

Выше приведен небольшой фрагмент кода для записи фрейма данных в файл Excel (One day). Я хочу, чтобы один и тот же файл Excel использовался каждый день.

Вы хотите, чтобы данные были на одном листе? разные листы на каждый день? Как проходит разделение между днями?

Shir 31.10.2018 12:48

проверьте библиотеку openpyxl, вы можете делать ссылки на ячейки в ней и сможете добавлять данные в определенные позиции.

MNA 31.10.2018 12:55

Я хочу в том же листе @Shir

Pavan 31.10.2018 13:00
2
3
219
2

Ответы 2

Используйте openpyxl:

Предположим, у вас есть существующий excel file-- 'output'+dte.strftime("%Y-%m-%d")+'.xlsx' с именем листа Sheet1. Вы можете сделать что-то вроде этого:

from openpyxl import load_workbook

book = load_workbook('output'+dte.strftime("%Y-%m-%d")+'.xlsx')
writer = pd.ExcelWriter('output'+dte.strftime("%Y-%m-%d")+'.xlsx', engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
df.to_excel(writer, 'Sheet1', index=None, startrow=1, header=None)
writer.save()

Сообщите мне, если это поможет.

Какая именно ошибка? Вы можете использовать мой код в качестве шаблона. Возможно, вам придется настроить его в соответствии с вашими потребностями.

Mayank Porwal 31.10.2018 14:33

PermissionError: [Errno 13] Permission denied: 'output2018-10-31.xlsx'

Pavan 31.10.2018 14:34

Дайте файлу необходимые разрешения. Это не моя ошибка кода. Эта ошибка должна была появиться, когда вы сделали этот writer = pd.ExcelWriter('output'+dte.strftime("%Y-%m-%d")+'.xlsx').

Mayank Porwal 31.10.2018 14:35

Я именно так и делаю, спасибо

Pavan 31.10.2018 14:37

Вы знаете, как предоставить права доступа к файлам. Я пробовал много способов, но он по-прежнему говорит то же самое!

Pavan 31.10.2018 15:03

Попробуйте: chmod +w <file-name>

Mayank Porwal 31.10.2018 15:08

Работает он примерно так: os.chmod ('output.xlsx', 0o755). Тем не менее, спасибо за идею !!

Pavan 01.11.2018 15:48

Большой. Теперь у вас есть разрешения на Excel. Попробуйте мой код.

Mayank Porwal 01.11.2018 15:57

Я соответствующим образом изменил код, но спасибо за помощь

Pavan 01.11.2018 16:46

Мой код помог? Удалось ли вам писать в том же Excel?

Mayank Porwal 02.11.2018 08:06

Это должно делать то, что вы хотите.

from openpyxl import load_workbook

workbook_name = 'C:\\your_path\\Book1.xlsx'
wb = load_workbook(workbook_name)
page = wb.active

# New data to write:
child = [['one','two','buckle my shoe'], ['three','four','open the door']]

for info in child:
    page.append(info)

wb.save(filename=workbook_name)

Другие вопросы по теме