django 导出excel
时间: 2025-06-18 13:50:21 浏览: 2
### 实现 Django 导出 Excel 文件
#### 安装必要的 Python 库
为了能够处理 Excel 文件,在 Django 项目中需安装一些额外的库。这些库可以帮助创建和操作 Excel 文档:
```bash
pip install XlsxWriter xlrd openpyxl pytz
```
上述命令会安装 `XlsxWriter`、`xlrd` 和 `openpyxl` 这些用于读取与编写 Excel 文件所需的工具[^2]。
#### 创建视图函数来导出数据至 Excel
在 Django 的视图层面上,可以定义一个新的视图用来响应用户的请求并将数据库中的记录转换成 Excel 表格的形式返回给客户端。这里展示了一个简单的例子说明怎样做这一点:
```python
from django.http import HttpResponse
import xlwt
from io import BytesIO
from .models import YourModelName # 替换成实际模型名称
def export_excel(request):
response = HttpResponse(content_type='application/ms-excel')
response['Content-Disposition'] = 'attachment; filename="exported_data.xls"'
wb = xlwt.Workbook(encoding='utf-8') # 新建工作簿对象
ws = wb.add_sheet('Sheet1') # 添加新的表单
row_num = 0 # 初始化行号计数器
font_style = xlwt.XFStyle() # 设置字体样式
columns = ['Column1', 'Column2', ... ] # 列名列表 (替换为真实列)
for col_num in range(len(columns)):
ws.write(row_num, col_num, columns[col_num], font_style) # 写入表头
rows = YourModelName.objects.all().values_list('field1', 'field2', ...) # 获取查询集并转为元组形式
for row in rows:
row_num += 1
for col_num in range(len(row)):
ws.write(row_num, col_num, str(row[col_num]), font_style) # 将每一行的数据写入到对应的单元格
output = BytesIO()
wb.save(output)
output.seek(0)
response.write(output.getvalue())
return response
```
这段代码展示了如何通过 HTTP 响应流式传输生成好的 Excel 文件供用户下载[^3]。
#### URL 配置
最后一步是在项目的 urls.py 文件里注册该视图路径以便可以通过浏览器访问此功能:
```python
urlpatterns = [
path('admin/', admin.site.urls),
...
path('export/excel/', views.export_excel), # 注册新路由指向刚才编写的视图方法
]
```
这样就完成了整个流程设置,当有人访问 `/export/excel/` 地址时就会触发导出逻辑,并弹出保存对话框让用户选择存储位置。
阅读全文
相关推荐















