​python学习手册大全点我下载​

Django把model中的数据导出Excel表格

代码:

import datetime
import xlwt
from .models import AlertMessage
def export_excel():
# 把AlertMessage表中10天前的数据导出到excel中
not_time = datetime.datetime.now()
now_sub_10 = not_time + datetime.timedelta(days=-10)
# 导出的数据保存在这个目录下
data_base_dir = r'D:\job\gs\data'
date_name = now_sub_10.strftime('%Y%m%d%H%M%S')
# 获取10天前的数据
alert_messages = AlertMessage.objects.filter(real=0, end_time__lt=now_sub_10)
if not alert_messages:
return
# 获取所有字段名
am_fields = AlertMessage._meta.fields
am_fields = [am_fields[i].name for i in range(len(am_fields))]
# 获取id
am_ids = set()
# 创建xlwt流
xls_am = xlwt.Workbook()
sht1_am = xls_am.add_sheet('Sheet1')
# 把字段名作为第一列内容写进excel表格中
for i in range(len(am_fields)):
sht1_am.write(0, i, am_fields[i])
for i in range(1, alert_messages.count() + 1):
am = alert_messages[i - 1]
am_ids.add(am.id)
# 把字段包容写进Excel中
for j in range(len(am_fields)):
# 通过属性方法获取字段值
value = am.__getattribute__(am_fields[j])
# 如果是时间字段需要转成字符串
if isinstance(value, datetime.datetime):
value = value.strftime('%Y-%m-%d %H:%M:%S.%f')
sht1_am.write(i, j, value)
# 保存数据
xls_am.save('{}\{}_alertMessage.xls'.format(data_base_dir, date_name))
# 把已经导出的数据从数据库中删除
AlertMessage.objects.filter(pk__in=am_ids).delete()


​python学习手册大全点我下载​

后记

【后记】为了让大家能够轻松学编程,我创建了一个公众号【轻松学编程】,里面有让你快速学会编程的文章,当然也有一些干货提高你的编程水平,也有一些编程项目适合做一些课程设计等课题。

如果文章对您有帮助,请我喝杯咖啡吧!

公众号

Django把model表中的数据导出Excel并删除原数据_字段

关注我,我们一起成长~~