利用django如何解析用户上传的excel文件
发布时间 - 2026-01-11 02:29:22 点击率:次前言

我们在工作中的时候,会有这种需求:用户上传一个格式固定excel表格到网站上,然后程序负债解析内容并进行处理。我最近在工作中就遇到了,所以想着将解决的过程总结分享出来,方便大家参考学习,下面话不多说,来一起看看详细的介绍:
举一个简单的栗子,比如我们有这样一个HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<p>上传EXCEL表格</p>
<form class="" action="" method="post" enctype="multipart/form-data" >
{% csrf_token %}
<input type="file" name="excel">
<input type="submit" value="上传">
</form>
</body>
</html>
forms.py文件内容如下,编写一个简单的判断后缀的验证:
# coding=utf-8
from django import forms
from django.utils.translation import gettext as _
from django.core.exceptions import ValidationError
def validate_excel(value):
if value.name.split('.')[-1] not in ['xls','xlsx']:
raise ValidationError(_('Invalid File Type: %(value)s'),params={'value': value},)
class UploadExcelForm(forms.Form):
excel = forms.FileField(validators=[validate_excel]) #这里使用自定义的验证
处理excel表格我这里使用xlrd库,使用pip安装即可。此时处理POST请求时有2种方法:
- 将用户上传的excel存储到磁盘中再读取交给xlrd处理。
- 直接在内存中读取用户上传的excel读取交给xlrd处理。
这里我使用第二个办法——在不修改django默认settings.py配置情况下,用户上传的文件其实是InMemoryUploadedFile类型,这个类型有一个read()方法,所以views.py中可以内存直接读取内容而不用写磁盘再读取了:
def post(self, request, *args, **kwargs):
form = UploadExcelForm(request.POST, request.FILES)
if form.is_valid():
wb = xlrd.open_workbook(
filename=None, file_contents=request.FILES['excel'].read()) # 关键点在于这里
table = wb.sheets()[0]
row = table.nrows
for i in xrange(1, row):
col = table.row_values(i)
print col
return HttpResponse("ok")
其他文件类型同理,如果不需要保存用户上传的文件到硬盘其实都可以这么处理。这里记录2个和django处理excel有关的资源:
- django-excel (本地下载)判断用户excel格式的三方库
- https://assist-software.net/blog/how-export-excel-files-python-django-application 讲解如何导出excel的文章
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# django
# 解析excel文件
# django读取excel文件
# django上传excel文件
# Django 实现图片上传和下载功能
# Django实现图片上传功能步骤解析
# 在django中图片上传的格式校验及大小方法
# django mysql数据库及图片上传接口详解
# Django 实现图片上传和显示过程详解
# Django框架文件上传与自定义图片上传路径、上传文件名操作分析
# django将图片上传数据库后在前端显式的方法
# Django后台获取前端post上传的文件方法
# Python+django实现文件上传
# django实现图片上传数据库并显示
# 上传
# 在工作中
# 会有
# 本地下载
# 不需要
# 第二个
# 这样一个
# 自定义
# 种方法
# 这篇文章
# 谢谢大家
# 多说
# 三方
# 有一个
# 再读
# 中再
# 情况下
# 有疑问
# def
# csrf_token
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在香港服务器上快速搭建免备案网站?
edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】
智能起名网站制作软件有哪些,制作logo的软件?
如何在七牛云存储上搭建网站并设置自定义域名?
潮流网站制作头像软件下载,适合母子的网名有哪些?
Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】
如何快速登录WAP自助建站平台?
如何实现javascript表单验证_正则表达式有哪些实用技巧
如何用AI帮你把自己的生活经历写成一个有趣的故事?
佛山网站制作系统,佛山企业变更地址网上办理步骤?
Laravel如何与Pusher实现实时通信?(WebSocket示例)
零基础网站服务器架设实战:轻量应用与域名解析配置指南
黑客如何利用漏洞与弱口令入侵网站服务器?
Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】
Android滚轮选择时间控件使用详解
JavaScript如何实现继承_有哪些常用方法
Laravel定时任务怎么设置_Laravel Crontab调度器配置
如何使用 jQuery 正确渲染 Instagram 风格的标签列表
简单实现jsp分页
Firefox Developer Edition开发者版本入口
Laravel Octane如何提升性能_使用Laravel Octane加速你的应用
再谈Python中的字符串与字符编码(推荐)
Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程
Laravel如何使用.env文件管理环境变量?(最佳实践)
Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】
如何在万网主机上快速搭建网站?
高端智能建站公司优选:品牌定制与SEO优化一站式服务
Laravel如何保护应用免受CSRF攻击?(原理和示例)
Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程
WordPress 子目录安装中正确处理脚本路径的完整指南
PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】
如何在宝塔面板中创建新站点?
详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优
如何快速搭建高效WAP手机网站吸引移动用户?
Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案
如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环
宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法
Android Socket接口实现即时通讯实例代码
HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】
如何在阿里云域名上完成建站全流程?
Laravel怎么在Blade中安全地输出原始HTML内容
laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法
简单实现Android文件上传
Win11关机界面怎么改_Win11自定义关机画面设置【工具】
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】
在Oracle关闭情况下如何修改spfile的参数
,南京靠谱的征婚网站?

