Как установить путь для файла Excel в Django - PullRequest
0 голосов
/ 27 июня 2018

Я использую панды ExcelWriter и openpyxl для создания Excel в проекте Django. Как мне установить определенный путь в каталоге моего проекта, чтобы сохранить созданный Excel? заранее спасибо.

from pandas import ExcelWriter
df_view = obj_master.get_employee()
writer = ExcelWriter('PythonExportt.xlsx')
df_view.to_excel(writer, 'Sheet1')
writer.save()

Ответы [ 3 ]

0 голосов
/ 27 июня 2018

Вероятно, лучший способ - записать поток Pandas Excel в поток памяти, а затем обернуть его в ответ HTTP:

from pandas import ExcelWriter

XLSX_MIME = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'

def some_excelfile_view(request):
    response = HttpResponse(content_type=XLSX_MIME)
    response['Content-Disposition'] = 'attachment; filename="PythonExport.xlsx"'

    # obtain obj_master
    # ...
    writer = pd.ExcelWriter(<b>response</b>, engine='xlsxwriter')

    df_view = obj_master.get_employee()
    df_view.to_excel(writer, 'Sheet1')
    writer.save()
    return response

Тогда вы можете использовать url, который сопоставляется с этим some_excelfile_view. Если пользователь затем просматривает этот URL, он выполнит загрузку файла для файла Excel.

0 голосов
/ 27 июня 2018

Получить путь к каталогу проекта, независимо от каких-либо ограничений. settings.py имеет значение каталога проекта в BASE_DIR, вы должны импортировать его и сохранить файл

from myproject.settings import BASE_DIR
from pandas import ExcelWriter
import os

save_path = os.path.join(BASE_DIR, 'backup')

df_view = obj_master.get_employee()
writer = ExcelWriter('{}/PythonExportt.xlsx'.format(save_path))
df_view.to_excel(writer, 'Sheet1')
writer.save()
0 голосов
/ 27 июня 2018

используйте ./path/to/file для объявления локального пути

UPDATE

в качестве альтернативы вы можете определить путь в settings.py и затем импортировать его в любой файл django как

Settings.py:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

Где-то в Джанго:

from django.conf import settings
def write_to_excel(dataFrame, sheetName): 
writer = pd.ExcelWriter(settings.BASE_DIR, engine='xlsxwriter')
dataFrame.to_excel(writer, sheetName='Sheet1')
writer.save()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...