django превосходят xlwt

Поскольку байт по стандартному определению составляет 8 битов, которые могут представлять 256 значений (от 0 до 255).

34
задан jbochi 24 December 2009 в 01:51
поделиться

5 ответов

аккуратная упаковка! я не знал об этом

Согласно документу, метод save (filename_or_stream) принимает либо имя файла для сохранения, либо файловый поток для записи.

И Объект ответа Django оказывается файловым потоком! так что просто сделайте xls.save (response) . Посмотрите документацию Django о создании PDF-файлов с помощью ReportLab, чтобы увидеть аналогичную ситуацию.

edit: (адаптировано из комментария ShawnMilo):

def xls_to_response(xls, fname):
    response = HttpResponse(mimetype="application/ms-excel")
    response['Content-Disposition'] = 'attachment; filename=%s' % fname
    xls.save(response)
    return response

затем из вашей функции просмотра просто создайте xls и закончите с помощью

return xls_to_response(xls,'foo.xls')
55
ответ дан 27 November 2019 в 16:41
поделиться

Вы можете сохранить свой XLS-файл в объекте StringIO , который похож на файл.

Вы можете вернуть getvalue () объекта StringIO () в ответ. Не забудьте добавить заголовки, чтобы пометить ее как загружаемую электронную таблицу.

2
ответ дан 27 November 2019 в 16:41
поделиться

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

0
ответ дан 27 November 2019 в 16:41
поделиться

Вы можете проверить huDjango , который поставляется с функцией, называемой сериализаторами .

2
ответ дан 27 November 2019 в 16:41
поделиться

*** Обновление: шаблоны Django-Excel больше не поддерживаются, вместо этого попробуйте Marmir http://brianray.github.com/mm/

Все еще в разработке Я набираю это, но http://code.google.com/p/django-excel-templates/ Проект Django Excel Projects стремится сделать то, что вы спрашивают.

Специально посмотрите на тесты. Вот простой случай:

#
from django_excel_templates import *
from django_excel_templates.color_converter import *
from models import *
from django.http import HttpResponse

def xls_simple(request):

    ## Simple ##
    testobj = Book.objects.all()

    formatter = ExcelFormatter()
    simpleStyle = ExcelStyle(vert=2,wrap=1)
    formatter.addBodyStyle(simpleStyle)
    formatter.setWidth('name,category,publish_date,bought_on',3000)
    formatter.setWidth('price',600)
    formatter.setWidth('ebook',1200)
    formatter.setWidth('about',20000)

    simple_report = ExcelReport()
    simple_report.addSheet("TestSimple")
    filter = ExcelFilter(order='name,category,publish_date,about,bought_on,price,ebook')
    simple_report.addQuerySet(testobj,REPORT_HORZ,formatter, filter)

    response = HttpResponse(simple_report.writeReport(),mimetype='application/ms-excel')
    response['Content-Disposition'] = 'attachment; filename=simple_test.xls'
    return response
6
ответ дан 27 November 2019 в 16:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: