Запись кадра данных Pandas в реальном времени в файл Excel (.XLSX) с использованием xlwings

Я должен видеть, как файл excel обновляется в реальном времени с моим фреймом данных pandas, который считывается из файла CSV.

Ниже мой файл CSV. И я читаю CSV с помощью панд, но я не знаю, как поместить это в файл Excel.

введите здесь описание изображения

Заранее спасибо!


person Viral Parmar    schedule 03.04.2019    source источник
comment
Можно ли использовать другие модули или обязательно использовать xlwings?   -  person A. Wolf    schedule 03.04.2019
comment
@A.Wolf Нет, это не обязательно. Посоветуйте другой модуль.   -  person Viral Parmar    schedule 03.04.2019
comment
Достаточно того, что вы записываете данные в файл? Я имею в виду, что вы должны закрыть файл, чтобы увидеть изменения. Я не думаю, что вы можете изменить его динамически, не закрывая его.   -  person A. Wolf    schedule 03.04.2019
comment
@ A.Wolf Я не хочу закрывать свой файл. Файл должен оставаться открытым, и я должен видеть, как обновляются данные.   -  person Viral Parmar    schedule 03.04.2019
comment
простой подход - использовать метод pandas DF.to_excel("Output_file.xlsx")   -  person Anonymous    schedule 03.04.2019
comment
Вы делаете это в окнах?   -  person JohanL    schedule 03.04.2019
comment
@JohanL да, сэр! Я также просмотрел библиотеку win32, но у меня все еще нет правильного способа вставки данных. В каждом примере, относящемся к win32, указан диапазон, в который необходимо вставить данные.   -  person Viral Parmar    schedule 03.04.2019


Ответы (2)


Я думаю, вы не можете этого сделать. См., например, это, в котором говорится, что Excel работает с копией документа .

Чтобы записать кадр данных в файл Excel, вы можете использовать метод pandas to_excel() следующим образом:

your_dataframe.to_excel(output.xlsx')

Хороший модуль для работы с Excel с более подробной информацией — xlwt. Вы можете посмотреть это руководство, в котором объясняется, как его использовать, со множеством примеров. .

person A. Wolf    schedule 03.04.2019
comment
Я уже использую openpyxl для помещения данных в файл Excel, и я также использую этот df.to_excel(писатель, имя_листа, startrow=startrow, **to_excel_kwargs, заголовок=True), чтобы поместить фрейм данных в файл excel, но проблема в том, что когда я открываю файл Excel, я не вижу, как данные обновляются в реальном времени. - person Viral Parmar; 03.04.2019
comment
Хорошо :) Я добавил первую ссылку, которая, как я думаю, может вам помочь, я не думаю, что вы можете это сделать. - person A. Wolf; 03.04.2019

Я предполагаю, что вы не слишком заботитесь о скорости, так как обновления должны происходить в реальном времени и быть видимыми для пользователя. Способ, который я могу придумать для достижения этого, заключается в использовании API-интерфейса win32 для com-объектов, доступного в Python для Windows, через пакет win32com. Для связи с другими объектами нам обычно нужен пакет win32com.client.

Используя это, довольно просто написать в открытую книгу Excel:

import win32com.client as win32

filename = "book.xlsx"

# Get a handle to excel:
excel = win32.gencache.EnsureDispatch('Excel.Application')
# Find open workbook with "filename" (which is the base name only)
wb = excel.Workbooks(filename)
# Set active sheet
ws = wb.Worksheets(1)

# We can access a single cell with "Cells":
ws.Cells(1,1).Value = "A1"
# Or multiple cells with a "Range" (note the strange tuple format of values)
ws.Range("C1:C3").Value =[("C1",), ("C2",), ("C3",)]

Этот пример должен быть довольно простым, чтобы превратить его во что-то, что вы можете использовать для записи ваших pandasdata в Excel. Однако вам потребуется «вручную» перебрать разные ячейки и записать их в документ Excel.

person JohanL    schedule 03.04.2019