Как записать два кадра данных в разных функциях в один файл Excel в Django - PullRequest
1 голос
/ 16 апреля 2019

Я пишу приложение для Django. В этом приложении у меня есть две функции в представлениях. В каждой функции фрейм данных enter code here записывает данные в файл Excel. Но я хочу записать данные в один файл Excel.

Но таким образом он сохраняет только данные df. Я хочу, чтобы данные обоих фреймов были размещены на двух листах

def func_one(request):
    writer = pd.ExcelWriter(file_path, engine='xlsxwriter')
    ad_dataframe.to_excel(writer,'Sheet1',index=False,encoding='utf-8-sig')
    writer.save()
    writer.close()


def func_two(request):
    writer = pd.ExcelWriter(file_path, engine='xlsxwriter')
    df.to_excel(writer,'Sheet2',index=False,encoding='utf-8-sig')
    writer.save()
    writer.close()

Ответы [ 4 ]

1 голос
/ 16 апреля 2019
from openpyxl import load_workbook
def func_one(request):
    writer = pd.ExcelWriter(file_path, engine='xlsxwriter')
    ad_dataframe.to_excel(writer,'Sheet1',index=False,encoding='utf-8-sig')
    writer.save()
    writer.close()


def func_two(request):
    book = load_workbook(file_path)
    writer = pd.ExcelWriter(file_path, engine='openpyxl') 
    writer.book = book
    writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
    ad_dataframe.to_excel(writer, "Sheet2",index=False,encoding='utf-8-sig')
    writer.save()
    writer.close()

Это сработало для меня

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

Вы можете написать их пандами на разных листах или даже присоединиться к ним и записать на уникальный лист в вашем файле Excel.

Пример записи на несколько листов

0 голосов
/ 16 апреля 2019
dfs = {'Sheet 1':df1, 'Sheet 2':df2}
writer = pd.ExcelWriter(file_path, engine='xlsxwriter')

for sheet_name in dfs.keys():
    dfs[sheet_name].to_excel(writer, sheet_name=sheet_name, index=False)

writer.save()

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

Вы пробовали Панды?

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_excel.html

Просто как:

df.to_excel(my_dataframe)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...