Django-rest-framework(DRF)怎么实现Excel文件导出

目录

一、安装openpyxl库

二、openpyxl库介绍

1、工作簿

a、创建工作簿

b、加载工作簿

c、保存工作簿

2、工作表

a、获取工作表

b、创建和删除工作表

c、工作表属性设置

3、单元格

a、获取单元格

b、合并单元格

C、设置单元格样式

三、django集成openpyxl库


一、安装openpyxl库

python 复制代码
pip install -i https://pypi.tuna.tsinghua.edu.cn/simpl openpyxl

二、openpyxl库介绍

1、工作簿

a、创建工作簿

python 复制代码
openpyxl.Workbook() #创建一个新的工作簿对象。

b、加载工作簿

python 复制代码
openpyxl.load_workbook(filename)  #加载一个已存在的Excel文件,并返回一个工作簿对象

c、保存工作簿

python 复制代码
workbook.save(filename) # 将工作簿保存到指定的文件名。

2、工作表

a、获取工作表

python 复制代码
workbook.active  # 获取当前活动的工作表
workbook[sheetname]  # 通过工作表名称获取工作表对象
workbook.sheetnames  # 获取工作簿中所有工作表的名称列表

b、创建和删除工作表

python 复制代码
workbook.create_sheet(title=None, index=None)  # 创建一个新的工作表,可以指定工作表的名称和位置。
workbook.remove(worksheet) # 删除指定的工作表。

c、工作表属性设置

python 复制代码
worksheet.title  # 获取或设置工作表的名称。
worksheet.max_row  # 获取工作表中的最大有效行数。
worksheet.max_column  # 获取工作表中的最大有效列数。

3、单元格

a、获取单元格

python 复制代码
worksheet['A1']="你好"  # 获取单元格并设置值

b、合并单元格

python 复制代码
worksheet.merge_cells("A1:D1")  # 合并A1和D1单元格

C、设置单元格样式

python 复制代码
cell.font =Font(name='Arial', size=12, bold=True, italic=False, color="FF0000")  # 设置字体样式字体样式,红色粗体Arial字体
cell.fill = PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="solid")  # 设置填充样式,黄色填充  
cell.alignment = Alignment(horizontal='center', vertical='center')  # 设置对齐方式

三、django集成openpyxl库

python 复制代码
class TestView(APIView):
    def get(self,request):
        house=HouseInfo.objects.all()
        wb = Workbook()
        ws = wb.active
        ws.title = "Sheet1"
        ws.merge_cells('A1:D1')  # 合并单元格
        ws['A1']='英雄联盟'  # 给单元格设置值
        ws['A1'].alignment = Alignment(horizontal="center", vertical="center")
        ws['A1'].font=Font(bold=True,size=14)  # 设置字体大小
        ws['A1'].fill =PatternFill(fill_type='solid', start_color='cccccc')  # 设置单元格填充颜色
        headers = ['city', 'title', 'region', 'area']  # 假设你的模型有这些字段
        ws.append(headers)  # 添加表头
        for obj in house:
            row = [obj.city, obj.title, obj.region, obj.area]
            ws.append(row)  # 将数据库数据写入Excel
        response = HttpResponse(content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
        response['Content-Disposition'] = 'attachment; filename="data.xlsx"'
        wb.save(response)
        return response

再用postman请求这个接口就可以下载这个excel文件了

相关推荐
小信啊啊1 分钟前
Go语言数组与切片的区别
开发语言·后端·golang
中国胖子风清扬3 分钟前
SpringAI和 Langchain4j等 AI 框架之间的差异和开发经验
java·数据库·人工智能·spring boot·spring cloud·ai·langchain
计算机学姐14 分钟前
基于php的摄影网站系统
开发语言·vue.js·后端·mysql·php·phpstorm
Java水解16 分钟前
【SpringBoot3】Spring Boot 3.0 集成 Mybatis Plus
spring boot·后端
whoops本尊18 分钟前
Golang-Data race【AI总结版】
后端
全栈陈序员22 分钟前
【Python】基础语法入门(二十)——项目实战:从零构建命令行 To-Do List 应用
开发语言·人工智能·python·学习
jcsx25 分钟前
如何将django项目发布为https
python·https·django
Elastic 中国社区官方博客25 分钟前
Elasticsearch:你是说,用于混合搜索(hybrid search)
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
墨守城规26 分钟前
线程池用法及原理
后端
用户21903265273527 分钟前
Spring Boot + Redis 注解极简教程:5分钟搞定CRUD操作
java·后端