微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – django xlsxwriter中的DateTime问题

我试图在我的 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之前调整它们.也许其他人可以添加一个建议.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐