IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> django上传excel并读入数据库 -> 正文阅读

[Python知识库]django上传excel并读入数据库

在web开发中,难免会遇到批量导入信息的操作。一般来说,给一个excel模版然后自己在本地填写完成后提交,并上传到对应的数据库中。在此之前,我也看了不少人的代码,但是运行起来都或多或少存在问题,所以索性写了这篇博客,以供参考和学习。

当然在上传到数据库中后需要对表的内容进行对比,然后筛选出相应的内容,这将是我后面需要写的内容了,这一部分其实没什么好说的了,就是简单的读,可以使用多种方法来进行。

关于django-admin startprocject项目等架构,包括设置settings.py和ORM建表命令等请参考我之前的博客内容,不再做过多的阐释了。这是我的测试项目文件目录。
在这里插入图片描述

在视图部分,建了跳转页面与上传文件的视图函数,在视图函数中也包含了对数据库的操作(见models.py)
需要上传的excel文件,注意格式是 xlsx
在这里插入图片描述

views.py 注意xlrd需要下载1.2.0,如果版本过高存在无法读取xlrd的情况。其中为了方便,我在中途打印了里面的数据,以测试是否正常。

import xlrd
from django.db import transaction

from django.shortcuts import render,HttpResponse,redirect
from TestDjan import models

def upload(request):
    return render(request,"upload.html")

def excel_upload(request):
    if request.method == "POST":
        file=request.FILES['my_file']
        print(file)
        type_file = file.name.split('.')[1]
        print(type_file)
        if type_file == 'xlsx':
            read_file = xlrd.open_workbook(filename=None,file_contents=file.read())
            file_table = read_file.sheets()[0]
            print(file_table)
            file_table_rows = file_table.nrows
            print(file_table_rows)

            try:
                with transaction.atomic():
                	# 读表格数据,从第二行开始,一般第一行都是说明
                    for i in range(1,file_table_rows):
                        print(i)
                        a=file_table.cell(i,0)
                        print(a.value)
                        b= file_table.cell(i,1)
                        print(b.value)
                        c=file_table.cell(i,2)
                        print(c.value)
                        models.test_excel_info.objects.create(name=a.value,pcnum=b.value,cause=c.value)
            except Exception as e:
                return render(request,"upload1.html",{'msg':e})
            return render(request,"upload1.html",{'msg':"suss"})
        return HttpResponse(render(request,"upload1.html",{'msg':"no"}))
    return HttpResponse(render(request,"upload1.html",{'msg':"none"}))

models.py ,这里是简单的一个表结构,不要忘记使用建表命令。

from django.db import models

class test_excel_info(models.Model):
    name = models.CharField('名称',max_length=20)
    pcnum = models.CharField('电脑编号',max_length=30)
    cause = models.CharField('理由',max_length=30)

urls.py

	path('upload/',views.upload),
    path('upload1',views.excel_upload),

下面是简单的前端测试代码:
upload.html,这是此页面
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="/upload1" method="post" enctype="multipart/form-data">

        {% csrf_token %}
        <input type="file" name="my_file">
        <input type="submit" value="提交">
    </form>
    <a href="/download_template" >点击下载模版文件</a>
</body>
</html>

选择浏览文件,点击上传后的页面,符合前面的逻辑。
在这里插入图片描述
upload1.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{{ msg }}
</body>
</html>

进入到suss说明已经成功了,可以选择在数据库中查看是否已经导入完毕:
在这里插入图片描述
当然了,这是上传的excel工作,为了保证实际工作中不引起格式的混乱,将在前端页面中展示相应的下载模版文件选项。
views.py

def download_template(request):
    file = open('Templates/test.xlsx', 'rb') # 路径不要写错了。
    response = FileResponse(file)
    response['Content-Type'] = 'application/octet-stream'
    response['Content-Disposition'] = 'attachment;filename="test.xlsx"'
    return response

urls.py

	path('download_template/',views.download_template),

前端页面也在upload.html给出。

以上就是在django框架体系中对excel下载与上传内容。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-08-19 19:00:11  更:2022-08-19 19:03:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 15:23:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码