excelpython下载_python 生成excel,并下载到本地

该博客介绍如何在Django中使用xlwt库生成Excel文件,并通过HttpResponse将文件下载到用户的本地。首先获取所有Phone对象的数据,然后创建工作簿,写入标题和数据,最后通过BytesIO将工作簿保存到内存并设置HTTP响应头,使得浏览器弹出保存文件对话框。
摘要由CSDN通过智能技术生成

from django.shortcuts import reverse,redirect,render

from operations import models

import xlwt

import os

from io import BytesIO

from django.http import HttpResponse

def phone_download(request):

phone_all = models.Phone.objects.all()

if phone_all:

# 创建工作簿

wb = xlwt.Workbook(encoding='utf-8')

sheet = wb.add_sheet('order-sheet')

# 写入文件标题

sheet.write(0, 0, '厂商')

sheet.write(0, 1, '型号')

sheet.write(0, 2, 'CPU')

sheet.write(0, 3, '系统版本')

data_row = 1

for i in phone_all:

sheet.write(data_row, 0, i.firms)

sheet.write(data_row, 1, i.model)

sheet.write(data_row, 2, i.CPU)

sheet.write(data_row, 3, i.version)

data_row = data_row + 1

# 保存于本地

# exist_file = os.path.exists("test.xls")

# if exist_file:

# os.remove(r"test.xls")

# wb.save("test.xls")

# 返回文件给用户,用户操作浏览器对话框保存文件

sio = BytesIO()

wb.save(sio)

sio.seek(0)

# http响应头告知浏览器,返回excel

response = HttpResponse(sio.getvalue(), content_type='application/vnd.ms-excel')

# 浏览器打开/保存的对话框

response['Content-Disposition'] = 'attachment; filename=test.xls'

# 响应体

response.write(sio.getvalue())

return response

models数据结构

class Phone(models.Model):

id = models.AutoField(primary_key=True)

firms = models.CharField(max_length=32,verbose_name="厂商")

model = models.CharField(max_length=32,verbose_name="型号")

CPU = models.CharField(max_length=32,verbose_name="CPU")

version = models.CharField(max_length=32,verbose_name="系统版本")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值