programing

django 엑셀 xlwt

i4 2023. 4. 16. 14:33
반응형

django 엑셀 xlwt

django 사이트에서는 데이터베이스 내의 데이터를 바탕으로 엑셀 파일을 생성하고 싶습니다.

xlwt를 사용하려고 합니다만, 데이터를 파일에 보존하는 방법밖에 없습니다.어떻게 하면 파일을 HttpResponse 객체에 가져올 수 있습니까?아니면 더 나은 도서관을 알고 있나요?

도 이 조각을 찾았지만, 제가 원하는 대로 되지 않아요.xlwt 오브젝트에서 응답 오브젝트로 스트림을 가져오는 방법(일시 파일에 쓰지 않고)만 있으면 됩니다.

깔끔한 패키지! 나는 이것에 대해 몰랐다.

의사 선생님 말씀에 따르면save(filename_or_stream)method는 저장할 파일 이름 또는 쓸 파일과 같은 스트림을 사용합니다.

그리고 Django 응답 객체는 파일 같은 스트림입니다.그래서 그냥.xls.save(response)ReportLab에서 PDF를 생성하는 방법에 대한 Django 문서를 참조하여 비슷한 상황을 확인하십시오.

편집: (Shawn Milo의 코멘트에서 인용):

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')

***UPDATE: django-module-module은 더 이상 유지보수가 되지 않습니다.대신 Marmir http://brianray.github.com/mm/ 를 사용해 주세요.

아직 개발중입니다만, http://code.google.com/p/django-excel-templates/의 Django Excel 템플릿 프로젝트는, 고객의 요구에 응하는 것을 목적으로 하고 있습니다.

구체적으로 검사 결과를 보세요.다음은 간단한 예입니다.

#
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

XLS 파일을 문자열에 저장할 수 있습니다.파일과 같은 IO 객체입니다.

문자열을 반환할 수 있습니다.IO 오브젝트의getvalue()반응으로요.헤더를 추가하여 다운로드 가능한 스프레드시트로 표시해야 합니다.

당신은 아마도 huDjango라는 함수에 의해 제공되는 huDjango를 확인하고 싶을 것이다.serializers.queryset_to_xls()쿼리셋을 다운로드 가능한 Excel 시트로 변환합니다.

https://bitbucket.org/kmike/django-excel-response 를 사용합니다.

데이터 결과에 수식이나 정확한 프레젠테이션 스타일이 필요하지 않은 경우 언제든지 CSV를 사용할 수 있습니다. 스프레드시트 프로그램은 CSV를 직접 읽습니다.CSV를 생성하지만 이름을 로 지정하는 웹 앱도 있습니다.Excel이 XSL을 여는 것을 확인합니다.

언급URL : https://stackoverflow.com/questions/883313/django-excel-xlwt

반응형