将数据导出到excel表格中,也算是我们开发中经常用到的功能,这里用到了python的xlwt模块。
1、安装xlwt模块
在你的django虚拟环境中安装:
1 pip install xlwt
2.models.py生成数据表
1 from django.db import models 2 3 4 class Customer(models.Model): 5 6 """客户模型""" 7 8 name = models.CharField(verbose_name='客户名称', max_length=64, unique=True) 9 website = models.CharField(verbose_name='客户网址', max_length=255, blank=True, null=True) 10 remarks = models.CharField(verbose_name='客户备注', max_length=255, blank=True, null=True)
3.views.py视图方法
1 import xlwt 2 from django.shortcuts import render,HttpResponse 3 from .models import Customer 4 5 def index(request): 6 response = HttpResponse(content_type='application/ms-excel') 7 8 response['Content-Disposition'] = 'attachment; filename="customer.xls"' 9 10 # 创建一个workbook,设置编码 11 12 wb = xlwt.Workbook(encoding='utf-8') 13 14 # 创建一个worksheet,对应excel中的sheet,表名称 15 16 ws = wb.add_sheet('customer') 17 18 row_num = 0 19 20 # 初始化样式 21 22 font_style = xlwt.XFStyle() 23 24 # 黑体 25 26 font_style.font.bold = True 27 28 # 写表头,对应自己的model类,将想要导出的字段表头写在这里 29 30 columns = ['客户名称', '网址', '备注信息'] 31 32 33 for col_num in range(len(columns)): 34 35 # 参数解读:(行,列,值,样式),row行 col列 36 37 ws.write(row_num, col_num, columns[col_num], font_style) 38 39 # 写表格内容 40 41 font_style = xlwt.XFStyle() 42 43 font_style.font.bold = False 44 45 # 拿到customer的所有数据信息,后面可以进行信息的过滤,条件自己来定,后面values_list的字段内容要喝表头一一相对应 46 47 rows = Customer.objects.values_list('name', 'website', 'remarks') 48 49 50 # 循环写入 51 52 for row in rows: 53 54 # 下面开始写表格内容 55 56 row_num += 1 57 58 for col_num in range(len(row)): 59 60 ws.write(row_num, col_num, row[col_num], font_style) 61 62 # 保存 63 64 wb.save(response) 65 66 return response 67 68 69 def test(request): 70 print("登录") 71 return render(request,'test.html')
4.urls.py配置路由
1 from django.contrib import admin 2 from django.urls import path 3 from app1 import views 4 urlpatterns = [ 5 path('admin/', admin.site.urls), 6 path('index/', views.index,name='index'), 7 path('test/',views.test) 8 ]
5.index.html用户页面
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 </head> 7 <body> 8 9 <!--把这个代码放任意地方都可以实现导出功能--> 10 11 <a class="export-xls" href="{% url 'export_customer' %}">将所有客户信息导出到Excel</a> 12 </body> 13 </html>
6.先登录test.html点击其中的“点击”就会跳转到index.html就会直接下载excel了
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 </head> 7 <body> 8 <a href="/index/">点击</a> 9 </body> 10 </html>
好了,以上就是简答的django项目中实现了excel导出功能。
标签:xlwt,excel,Django,num,import,font,col,row From: https://www.cnblogs.com/shaoyishi/p/16851327.html