Написание Pandas Data Frame в реальном времени в файл Excel (.XLSX) с использованием xlwings - PullRequest
0 голосов
/ 03 апреля 2019

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

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

enter image description here

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

Ответы [ 2 ]

0 голосов
/ 03 апреля 2019

Я предполагаю, что вы не слишком обеспокоены скоростью, поскольку обновления должны происходить в реальном времени и быть видимыми для пользователя. Чтобы достичь этого, я могу использовать apis 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",)]

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

0 голосов
/ 03 апреля 2019

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

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

your_dataframe.to_excel(output.xlsx')

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

...