加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – django xlsxwriter中的DateTime问题

发布时间:2020-12-20 13:13:55 所属栏目:Python 来源:网络整理
导读:我试图在我的 django视图中创建导出到excel功能,如下所示: def export_myreport(request,sd,ed): from xlsxwriter.workbook import Workbook import cStringIO as StringIO from django.utils.encoding import smart_str # create a workbook in memory out
我试图在我的 django视图中创建导出到excel功能,如下所示:

def export_myreport(request,sd,ed):
    from xlsxwriter.workbook import Workbook
    import cStringIO as StringIO
    from django.utils.encoding import smart_str

    # create a workbook in memory
    output = StringIO.StringIO()

    wb = Workbook(output)

    bg = wb.add_format({'bg_color': '#9CB640','font_color': 'black'})
    bg2 = wb.add_format({'bg_color': '#FFFFFF','font_color': 'black'})

    ws = wb.add_worksheet('My Report')

    row_num = 0

    summary = MyModel.objects.filter(time__range = (sd,ed)).select_related()

    row_num += 2
    row = [
        smart_str(u"Time"),smart_str(u"Item"),smart_str(u"User")
    ]
    for col_num in xrange(len(row)):
        ws.write(row_num,col_num,row[col_num],bg)

    for s in summary:
        row_num += 1
        row2 = [
            s.time,s.model_name,s.user.first_name
        ]
        for col_num in xrange(len(row2)):
            ws.write(row_num,row2[col_num],bg2)

    wb.close()

    output.seek(0)
    response = HttpResponse(output.read(),content_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
    response['Content-Disposition'] = "attachment; filename=myreport.xlsx"

    return response

但我在使用DateTime格式时遇到了一些问题!也许我在这里缺少什么?

这是我得到的错误:

TypeError at /myapp/export_myreport/2015-05-01/2015-05-19
can't subtract offset-naive and offset-aware datetimes

编辑:

这就是我在我的html中调用url的方式:

<a href="export_myreport/{{begindate}}/{{enddate}}" class="btn btn-default pull-right" role="button">Export to XLSX</a>

这里{{begindate}}和{{enddate}}是角度变量.

解决方法

Excel和XlsxWriter不支持日期/时间的时区.

因此,在将日期时间传递给XlsxWriter之前,您需要从日期时间中删除或调整时区.

来自pytz文档的类似内容:

dt = datetime(2005,3,1,14,13,21,tzinfo=utc)
naive = dt.replace(tzinfo=None)

可能在Django中处理得更好,而不是在将所有日期时间数据传递给XlsxWriter之前调整它们.也许其他人可以添加一个建议.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读