django上传excel解析并保存到数据库中

因为每个人的数据库结构设计的不一样,所以只放一部分代码数据库使用的是mysql
包的版本如图所示
环境版本
解析excel使用的是xlrd,在app下面新建一个read_excel.py文件
def price_parse_excel(excel_name):
cases = []
workbook = xlrd.open_workbook(excel_name)
sheets_list = workbook.sheet_names()
for i in range(len(sheets_list)):
tale = workbook.sheets()[i]
# 获取总行
nrows = tale.nrows
# 从第二行开始
for j in range(1, nrows):
row = tale.row_values(j)
cases.append(
{
‘type’: row[1],
‘time’: row[2],
“pr”: row[3],
}
)
return cases

然后写view中上传excel和将数据插入到mysql中的方法,因为我比较懒就写在一个函数里面了,这里是上传excel方法的实现, 其中UPLOAD_ROOT我是在setting.py中设置的
setting.py设置

def upload_by_excel(request):
if request.method == “GET”:
return render(request, ‘jiesuan/test_hys.html’)
elif request.method == “POST”:
# userid = request.session.get(’_auth_user_id’)
# 获取上传的file名字
file = request.FILES.get(‘file’)
if not os.path.exists(UPLOAD_ROOT):
os.makedirs(UPLOAD_ROOT)
try:
if file is None:
return HttpResponse(‘请选择要上传的文件’)
with open(UPLOAD_ROOT + ‘/’ + file.name, ‘wb’) as fp:
for i in file.readlines():
fp.write(i)
然后调用上面的read_excel.py中的函数解析excel,并且用变量接受,然后可以通过遍历将excel中的数据插入到excel中,(有合并的单元格除了第一行数据会读出合并的数据外其它的都会读出Null)
cases = parse_excel(UPLOAD_ROOT + ‘/’ + file.name)
for project_info in range(len(cases)):
i = cases[project_info]
project.objects.create(PR=i[‘pr’], time=i['time‘], type=i['type])

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值