下面是“Django 导出 Excel 代码的实例详解”。
目录
- 前言
- 安装依赖
- 代码实现
- 准备工作
- HttpResponse 类型
- FileResponse 类型
- 示例说明
- 示例1:HttpResponse 类型
- 示例2:FileResponse 类型
- 总结
前言
在Django开发中,有时我们需要将数据导出为Excel格式的文件,方便数据的分享和查看。本篇文章将详细讲解Django如何实现导出Excel功能,包括安装依赖、代码实现和示例说明。
安装依赖
实现Django导出Excel功能,首先要安装两个依赖包openpyxl
和XlsxWriter
。他们分别用于在Python中操作.xlsx和.xls格式的Excel文件。
可通过以下命令进行安装:
pip install openpyxl
pip install XlsxWriter
代码实现
准备工作
首先我们需要先定义存储Excel文件的函数, 此处定义一个名为export_excel
的函数, 通过传递工作簿、sheet、filename 三个参数进行实现。
from django.http import HttpResponse, FileResponse
from openpyxl import Workbook
import xlsxwriter
def export_excel(workbook, sheet_name, filename):
workbook.save(filename)
with open(filename, "rb") as excel:
response = HttpResponse(excel.read(), content_type='application/vnd.ms-excel')
response['Content-Disposition'] = f'attachment; filename={filename}'
return response
上述代码中:
- workbook
:为写入数据的Excel工作簿对象。
- filename
:为导出的文件名。
HttpResponse 类型
基于HttpResponse类型,数据将直接返回响应结果。
def excel_export(request):
workbook = Workbook()
sheet = workbook.active
header = ['姓名', '年龄', '性别']
data = [
['张三', 18, '男'],
['李四', 20, '女'],
['王五', 22, '男'],
]
sheet.append(header)
for item in data:
sheet.append(item)
filename = 'user.xlsx'
return export_excel(workbook, sheet.title, filename)
FileResponse 类型
基于FileResponse类型,数据内容将驻留在服务器上,在客户端调用时再进行访问。
def excel_export(request):
workbook = xlsxwriter.Workbook('user.xls')
sheet = workbook.add_worksheet()
header = ['姓名', '年龄', '性别']
data = [
['张三', 18, '男'],
['李四', 20, '女'],
['王五', 22, '男'],
]
row, col = 0, 0
for item in header:
sheet.write(row, col, item)
col += 1
row, col = 1, 0
for items in data:
for item in items:
sheet.write(row, col, item)
col += 1
row += 1
col = 0
workbook.close()
return FileResponse(open('user.xls', 'rb'), as_attachment=True, filename='user.xls')
示例说明
示例1:HttpResponse 类型
在视图函数中创建一个简单的工作簿对象,并添加header和data数据。接着调用export_excel
函数导出Excel。
from django.http import HttpResponse
from openpyxl import Workbook
def excel_export(request):
workbook = Workbook()
sheet = workbook.active
header = ['姓名', '年龄', '性别']
data = [
['张三', 18, '男'],
['李四', 20, '女'],
['王五', 22, '男'],
]
sheet.append(header)
for item in data:
sheet.append(item)
filename = 'user.xlsx'
return export_excel(workbook, sheet.title, filename)
示例2:FileResponse 类型
在视图函数中创建一个简单的工作簿对象,并添加header和data数据。接着调用export_excel
函数导出Excel。
import xlsxwriter
from django.http import FileResponse
def excel_export(request):
workbook = xlsxwriter.Workbook('user.xls')
sheet = workbook.add_worksheet()
header = ['姓名', '年龄', '性别']
data = [
['张三', 18, '男'],
['李四', 20, '女'],
['王五', 22, '男'],
]
row, col = 0, 0
for item in header:
sheet.write(row, col, item)
col += 1
row, col = 1, 0
for items in data:
for item in items:
sheet.write(row, col, item)
col += 1
row += 1
col = 0
workbook.close()
return FileResponse(open('user.xls', 'rb'), as_attachment=True, filename='user.xls')
总结
本文介绍了Django如何实现导出Excel的功能,通过安装依赖包和编写对应的代码实现。同时提供了两个示例,通过对示例代码的解释和说明,让读者更加深入的理解这一功能实现的过程,希望对Django开发人员有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django 导出 Excel 代码的实例详解 - Python技术站