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)
posted on 2023-03-23 20:16  msugry  阅读(196)  评论(0)    收藏  举报