使用openpyxl模块将Excel中的数据导入数据库
这里将不介绍openpyxl模块的详细操作。
主要就是记录一个使用openpyxl模块将Excel表格的数据导入数据库中的实例。
from openpyxl import load_workbook import os,django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "项目名称.settings")
django.setup() from backend.models import User # 封装成一个函数,调用是传入表格路径即可
def xlsxHandler(localpath):
wb = load_workbook(localpath) # 打开已存在的execl文件,格式xlsx ws = wb[wb.sheetnames[0]] # 选择第一张sheet表
rows = ws.max_row # 获取表的最大行数
columns = ws.max_column # 获取表的最大列数 column_heading = [ws.cell(row=1,column=x).value for x in range(1,columns+1)] # 读取excel第一行的值,写入list column_name = ['用户名','公司名称','电话'] # 数据库必需字段 # print(column_heading) # 文件第一行title if len([name for name in column_name if name not in column_heading]) == 0: # 返回字段组成的list为空,则说明文件列标题包含MySQL需要的字段
print(' - 检查完成,执行写入')
# 判断Excel中各字段所在列号
username = column_heading.index(column_name[0]) # 用户名 - 位置
company = column_heading.index(column_name[1]) # 公司 - 位置
phone = column_heading.index(column_name[2]) # 电话 - 位置 if ws.cell(row=2,column=1).value == None:
table_start_line = 3
else:
table_start_line = 2
data = []
userList = []
for row in range(table_start_line, rows + 1):
for column in range(1, columns + 1): # 因为从第1列开始,所以此处从1开始
data.append(str(ws.cell(row=row, column=column).value)) # 以字符串形式保存数据到MySQL
print(data)
print(data[username],data[company],data[phone])
userList.append(User(username=data[username],company=data[company],phone=data[phone]))
data = []
print('userList ',userList ) try:
User.objects.bulk_create(userList ) # 使用bulk_create批量导入
msg = '导入成功'
except Exception as e:
print('异常',e)
msg = '导入失败'
else:
print('文件列标题不完全包含数据库需要的字段,请检查文件。')
msg = '文件列标题不完全包含数据库需要的字段,请检查文件。'
wb.close() # 关闭excel return msg
使用openpyxl模块将Excel中的数据导入数据库的更多相关文章
- 使用Python将Excel中的数据导入到MySQL
使用Python将Excel中的数据导入到MySQL 工具 Python 2.7 xlrd MySQLdb 安装 Python 对于不同的系统安装方式不同,Windows平台有exe安装包,Ubunt ...
- excel中的数据导入oracle方法
SQL_loader批量上传数据 1. 注释 在工作中,很多时候会遇到如下情况:需要将excel中的数据批量上传到ORACLE表中.如果是小数据量,如几十条至几百条,那么用plsql dev工具 ...
- 详解用Navicat工具将Excel中的数据导入Mysql中
第一步:首先需要准备好有数据的excel: 第二步:选择"文件"->"另存为",保存为"CSV(逗号分隔)(*.csv)",将exce ...
- c#.net Excel中的数据导入到SQL数据库中
/// <summary> /// 从Excel 导入学生 /// </summary> /// <param name=&qu ...
- 用JDBC把Excel中的数据导入到Mysql数据库中
步骤:0.在Mysql数据库中先建好table 1.从Excel表格读数据 2.用JDBC连接Mysql数据库 3.把读出的数据导入到Mysql数据库的相应表中 其中,步骤0的table我是先在Mys ...
- 用ttBulkCp把excel中的数据导入到timesten数据库中
最近要做数据预处理,需要用到数据库.而且是以前从来没听说过的TimesTen. 首要目标是要把Excel里的数据,导入到TimesTen数据库中.而TimesTen在win10里用不了,于是我就在虚拟 ...
- 使用navicat for sqlserver 把excel中的数据导入到sqlserver数据库
以前记得使用excel向mysql中导入过数据,今天使用excel向sqlserver2005导入了数据,在此把做法记录一下 第一步:准备excel数据,在这个excel中有3个sheet,每个she ...
- 把excel中的数据导入到数据库
import.php <?php header("Content-Type:text/html;charset=utf-8"); echo '<html> < ...
- 把excel中的数据导入到Oracle数据库中
从事工作以来,数据库一直使用oracle,却不知道excel导入oracle,今天看了一篇文章,分享给大家,希望对大家有用. https://jingyan.baidu.com/article/0f5 ...
随机推荐
- VS2013 编辑器
1. VS -> 本地Git -> Github 1. 右键单击解决方案,选择“将解决方案添加到源代码管理器”,选择Git 2. 切换到团队资源管理器([菜单]视图->团队资源管理器 ...
- EXECUTE 后的事务计数指示缺少了 COMMIT 或 ROLLBACK TRANSACTION 语句。上一计数 = 1,当前计数 = 2
理解这一句话: 一个begin tran会增加一个事务计数器,要有相同数量的commit与之对应,而rollback可以回滚全部计数器 这个错误一般是出现在嵌套事务中. 测试环境 sql 2008 例 ...
- 安装MySQL-python时报错
(py27) [root@test SimpletourDevops]# pip install MySQL-python DEPRECATION: Python 2.7 will reach the ...
- CentOS7.x编译安装nginx,实现HTTP2
网站使用HTTP2有助于网站加速及更安全,要配置HTTP2必须满足两个条件:①openssl的版本必须在1.0.2e及以上.②nginx的版本必须在1.9.5以上 一.准备工作 配置HTTP2之前需 ...
- IntelliJ IDEA导入多个eclipse项目到同一个workspace下
IntelliJ IDEA 与eclipse在新建项目上工作区的叫法略有不同,区别见下图. 我们在eclipse都是在新建的workspace目录下新建我们的项目,但是在IDEA中没有workspac ...
- linux下利用dd命令测试磁盘读写速度
在Linux中,dd命令用于读取.转换和输出数据,它可从标准输入或文件中读取数据并输出到指定文件或标准输出中.该命令使用参数如下: 其中”=“后面的为设置的参数 If = <文件名> : ...
- 【Canal源码分析】重要类图
从Canal的整体架构中,我们可以看出,在Canal中,比较重要的一些领域有Parser.Sink.Store.MetaManager.CanalServer.CanalInstance.CanalC ...
- MyBatis 注解配置
Employee package com.example.demo.domain; import java.io.Serializable; public class Employee impleme ...
- Silverlight中使用MVVM(3)—进阶
这篇主要引申出Command结合MVVM模式在应用程序中的使用 我们要做出的效果是这样的 就是提供了一个简单的查询功能将结果绑定到DataGrid中,在前面的基础上,这个部分相对比较容易实现了 我们在 ...
- 详解C#特性和反射(二)
使用反射(Reflection)使得程序在运行过程中可以动态的获取对象或类型的类型信息,然后调用该类型的方法和构造函数,或访问和修改该类型的字段和属性:可以通过晚期绑定技术动态的创建类型的实例:可以获 ...