xlwt和openpyxl导出excel文件
xlwt导出Excel数据
安装对应的'xlwt'库
pip install xlwt
一、保存到响应中并返回响应
根据填写的内容写入Excel文件
import xlwt
from django.http import HttpResponse
def export_excel(request):
# 创建工作簿
workbook = xlwt.Workbook(encoding='utf-8')
# 创建工作表
worksheet = workbook.add_sheet('Sheet1')
# 获取数据
row_title = ['名称', '地点', '人物', '开始时间', '结束时间']
th_ins = Threat.objects.filter(name__icontains=name)
# 写表头
for index, col in enumerate(row_title):
ws.write(0, index, col)
# 写入表内数据
for index, row in enumerate(th_ins):
# 写表内容
ws.write(index + 1, 0, row.name)
ws.write(index + 1, 1, row.address)
ws.write(index + 1, 2, row.people)
ws.write(index + 1, 3, row.create_time.strftime('%Y-%m-%d %H:%M:%S'))
ws.write(index + 1, 4, row.end_time.strftime('%Y-%m-%d %H:%M:%S'))
# 将Excel文件保存到HttpResponse对象中
response = HttpResponse(content_type='application/ms-excel')
response['Content-Disposition'] = 'attachment; filename="example.xls"'
workbook.save(response)
return response
二、保存到本地:
import xlwt
# 创建一个workbook 设置编码
workbook = xlwt.Workbook(encoding = 'utf-8')
# 创建一个worksheet
worksheet = workbook.add_sheet('My Worksheet')
# 写入excel
# 参数对应 行, 列, 值
worksheet.write(1,0, label = 'this is test')
# 保存
workbook.save('Excel_test.xls')
额外知识
HttpResponse对象的content_type参数用于指定响应的内容类型。以下是一些常见的content_type类型:
text/html:HTML文档text/plain:纯文本application/json:JSON数据application/pdf:PDF文档image/png:PNG图片image/jpeg:JPEG图片audio/mpeg:MPEG音频video/mp4:MP4视频
openpyxl导出Excel数据
安装对应的'openpyxl'库
pip install openpyxl
一、保存到响应中并返回响应
from openpyxl import Workbook
from django.http import HttpResponse
def export_excel(request):
# 创建一个Excel工作簿
wb = Workbook()
# 获取默认的工作表
ws = wb.active
# 向工作表中添加数据
ws['A1'] = 'Hello'
ws['B1'] = 'World'
# 将工作簿保存到响应中
response = HttpResponse(content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
response['Content-Disposition'] = 'attachment; filename=my_excel_file.xlsx'
wb.save(response)
return response
在上面的代码中,我们首先创建了一个Excel工作簿,并向其中添加了一些数据。然后将工作簿保存到一个HTTP响应对象中,将其返回给用户。在保存工作簿时,我们将响应的content_type参数设置为application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,这是Excel文件的MIME类型。同时,我们将响应的Content-Disposition头设置为attachment,这会提示浏览器将响应作为附件下载,并将文件名设置为my_excel_file.xlsx。
二、保存到本地
import random, openpyxl
wb = openpyxl.Workbook()
dest_filename = 'empty_book.xlsx'
# 第一个sheet
sheet_1 = wb.active
sheet_1.title = 'range names' # 定义sheet名称
for row in range(1, 40):
sheet_1.append(range(600))
# 第二个sheet
sheet_2 = wb.create_sheet(title='Pi') # 定义sheet名称
sheet_2['F5'] = 3.14
sheet_3 = wb.create_sheet(title='Data')
for row in range(10, 20):
for col in range(27, 54):
_ = sheet_3.cell(column=col, row=row, value=random.randint(1, 10))
wb.save(filename=dest_filename)
浙公网安备 33010602011771号