Django2.1实现数据导出Excel

12 篇文章 1 订阅
4 篇文章 0 订阅

Django2.1实现数据导出Excel

需求

将数据库内的数据按照规则排序导出为Excel;
数据列要按指定顺序排列,列名替换为中文。

在Python环境下操作Excel的模块有 xlrd,xlwt 和 pandas 等
xlrd只支持对Excel文件格式为xls文件的读取
xlwt只支持对Excel文件格式为xls文件的写入
pandas支持对多种格式文件的读取和写入
因为还在别的地方需要对数据进行处理,所以我选用pandas
欢迎大佬指点,谢谢!

Django数据查询

  1. 生成数据字典
list_raw = models.storage.objects.values(
        'id', 'name', 'sex', 'age', 'birthday', 'phone',
        'email', 'address').order_by('age', 'birthday')

这里进行的查询操作会返回一个列表对象。
内容包含所查询的字段内容并按照age和birthday排序
数据示例:

[{'id': 1, 'name': '小明', 'age': '10',,,,,,}, {'id': 2, 'name': '小亮', 'age': '11',,,,,,}……]

这种列表内嵌套字典的形式不仅方便传送给前端解析成数据表格也方便转换成Excel。

数据转换

  1. 将字典转换为DataFrame
# list() 是为了让query对象转换成数据列表
pf = pd.DataFrame(list(mate_list_raw))
  1. 设置数据列顺序
order = ['id', 'name', 'sex', 'age', 'birthday',
             'phone','email', 'address']
pf = pf[order]
  1. 替换列名为中文
columns_map = {
        'id': '序号',
        'name': '姓名',
        'sex': '性别',
        'age': '年龄',
        'birthday': '生日',
        'phone': '电话',
        'email': '邮箱',
        'address': '地址',
    }
    pf.rename(columns=columns_map, inplace=True)
    # 将空的单元格替换为空字符
    pf.fillna('', inplace=True)
  1. 设定文件名和导出路径
filename = 'userinfo.xlsx'
# 这个路径可以在settings中设置也可以直接手动输入
root_path = settings.MEDIA_ROOT + '/fileOutput/'
file_path = os.path.join(root_path, filename)
pf.to_excel(file_path, encoding='utf-8', index=False)
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安心写bug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值