Python(Django)页面导出Excel

Python(Django)页面导出Excel表格数据

最近做项目要使用到 导出Excel 的表格,正好有 openpyxl 这个库。

今天给大家分享一下如何使用这个库并在 Django 页面导出Excel表;

首先,安装openpyxl库:

pip install openpyxl

现在,我们可以写我们的代码了。

案例:我们以导出病人到医院的挂号信息为例来讲解 openpyxl 的使用;

导入需要用到的库

首先,在自己的视图函数中导入模块,需要使用到如下的三个模块:

from openpyxl import Workbook	# 操作Excel的库
from io import BytesIO		# 实现了在内存中读写bytes
from django.utils.http import urlquote		# 解决导出Excel文件无法使用中文文件名

openpyxl 库是用来用Python代码操作Excel表的库;

BytesIO 可以实现在内存中读写bytes;

urlquote 该方法为了解决导出Excel文件因无法使用中文文件名的问题;

BytesIO

StringIO 操作的只能是 str ,如果要操作二进制数据,就需要使用 BytesIO

BytesIO 实现了在内存中读写 bytes ,我们创建一个 BytesIO ,然后写入一些 bytes :

>>> from io import BytesIO
>>> f = BytesIO()
>>> f.write('中文'.encode('utf-8'))
6
>>> print(f.getvalue())
b'\xe4\xb8\xad\xe6\x96\x87'

请注意,写入的不是 str,而是经过 UTF-8 编码的 bytes;

和 StringIO 类似,可以用一个 bytes 初始化 BytesIO ,然后,像读文件一样读取:

>>> from io import BytesIO
>>> f = BytesIO(b'\xe4\xb8\xad\xe6\x96\x87')
>>> f.read()
b'\xe4\xb8\xad\xe6\x96\x87'

小结

StringIO 和 BytesIO 是在内存中操作 str 和 bytes 的方法, 使得和读写文件具有一致的接口。

定义导出函数export_excel

def export_excel(request):
    import datetime
    from django.http import HttpResponse
	from openpyxl import Workbook
    from io import BytesIO
    from django.utils.http import urlquote
    wb = Workbook()		# 生成一个工作簿(即一个Excel文件)
    wb.encoding = 'utf-8'
    sheet1 = wb.active	# 获取第一个工作表(sheet1)
    sheet1.title =
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值