导出数据到excel表格,以上代码主体是carsys项目

def export_excel(request):
    carinfo = request.GET.get('carinfo', '')
    queryset = Record.objects.filter(is_deleted=False) \
        .defer('deleted_time', 'is_deleted', 'updated_time') \
        .select_related('car').order_by('-makedate')
    if carinfo:
        queryset = queryset.filter(
            Q(car__carno__iexact=carinfo) | Q(car__owner__contains=carinfo)
        )
        ###以上代码是查询符合条件的对象
    wb = Workbook()
    sheet = wb.active
    col_names = ('车牌号', '车主姓名', '违章原因', '违章时间', '处罚方式', '是否受理')
    for index, col in enumerate('ABCDEF'):
        sheet[f'{col}1'] = col_names[index]
    row = 2
    for record in queryset:
        sheet[f'A{row}'] = record.car.carno
        sheet[f'B{row}'] = record.car.owner
        sheet[f'C{row}'] = record.reason
        sheet[f'D{row}'] = record.makedate
        sheet[f'E{row}'] = record.punish
        sheet[f'F{row}'] = '已受理' if record.dealt else '未受理'
        row += 1
    buffer = BytesIO()
    wb.save(buffer)
    resp = HttpResponse(buffer.getvalue())
    # 设置响应头指定MIME类型(告诉浏览器服务器返回的内容类型)
    resp['content-type'] = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
    filename = quote('违章记录表.xlsx')
    # 设置响应头指定内容处置方式(inline-内联打开;attachment-下载)
    # 如果要设置中文文件名,需要将中文处理成百分号编码,否则不能写到响应头
    resp['content-disposition'] = f'attachment; filename*=utf-8\'\'{filename}'
    return resp

以上代码主体是carsys项目

如果要导出excel 需要在pycharm中下载依赖

pip install openpyxl pillow
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值