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文件了

相关推荐
tyler_download3 分钟前
golang 实现比特币内核:实现基于椭圆曲线的数字签名和验证
开发语言·数据库·golang
hlsd#4 分钟前
go mod 依赖管理
开发语言·后端·golang
哇咔咔哇咔4 分钟前
【科普】conda、virtualenv, venv分别是什么?它们之间有什么区别?
python·conda·virtualenv
infiniteWei5 分钟前
【Lucene】什么是全文检索?解读结构化数据与非结构化数据
django·全文检索·lucene
陈大爷(有低保)8 分钟前
三层架构和MVC以及它们的融合
后端·mvc
亦世凡华、8 分钟前
【启程Golang之旅】从零开始构建可扩展的微服务架构
开发语言·经验分享·后端·golang
河西石头9 分钟前
一步一步从asp.net core mvc中访问asp.net core WebApi
后端·asp.net·mvc·.net core访问api·httpclient的使用
2401_8574396921 分钟前
SpringBoot框架在资产管理中的应用
java·spring boot·后端
怀旧66622 分钟前
spring boot 项目配置https服务
java·spring boot·后端·学习·个人开发·1024程序员节
CSXB9926 分钟前
三十四、Python基础语法(文件操作-上)
开发语言·python·功能测试·测试工具