首页 > 其他分享 >Django当中如何实现用xlwt来导出一个excel文件?

Django当中如何实现用xlwt来导出一个excel文件?

时间:2022-11-02 16:15:46浏览次数:58  
标签:xlwt excel Django num import font col row

 

将数据导出到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

相关文章