这里将不介绍openpyxl模块的详细操作。

主要就是记录一个使用openpyxl模块将Excel表格的数据导入数据库中的实例。

  1. from openpyxl import load_workbook
  2.  
  3. import os,django
  4. os.environ.setdefault("DJANGO_SETTINGS_MODULE", "项目名称.settings")
  5. django.setup()
  6.  
  7. from backend.models import User
  8.  
  9. # 封装成一个函数,调用是传入表格路径即可
  10. def xlsxHandler(localpath):
  11. wb = load_workbook(localpath) # 打开已存在的execl文件,格式xlsx
  12.  
  13. ws = wb[wb.sheetnames[0]] # 选择第一张sheet表
  14. rows = ws.max_row # 获取表的最大行数
  15. columns = ws.max_column # 获取表的最大列数
  16.  
  17. column_heading = [ws.cell(row=1,column=x).value for x in range(1,columns+1)] # 读取excel第一行的值,写入list
  18.  
  19. column_name = ['用户名','公司名称','电话'] # 数据库必需字段
  20.  
  21. # print(column_heading) # 文件第一行title
  22.  
  23. if len([name for name in column_name if name not in column_heading]) == 0: # 返回字段组成的list为空,则说明文件列标题包含MySQL需要的字段
  24. print(' - 检查完成,执行写入')
  25. # 判断Excel中各字段所在列号
  26. username = column_heading.index(column_name[0]) # 用户名 - 位置
  27. company = column_heading.index(column_name[1]) # 公司 - 位置
  28. phone = column_heading.index(column_name[2]) # 电话 - 位置
  29.  
  30. if ws.cell(row=2,column=1).value == None:
  31. table_start_line = 3
  32. else:
  33. table_start_line = 2
  34. data = []
  35. userList = []
  36. for row in range(table_start_line, rows + 1):
  37. for column in range(1, columns + 1): # 因为从第1列开始,所以此处从1开始
  38. data.append(str(ws.cell(row=row, column=column).value)) # 以字符串形式保存数据到MySQL
  39. print(data)
  40. print(data[username],data[company],data[phone])
  41. userList.append(User(username=data[username],company=data[company],phone=data[phone]))
  42. data = []
  43. print('userList ',userList )
  44.  
  45. try:
  46. User.objects.bulk_create(userList ) # 使用bulk_create批量导入
  47. msg = '导入成功'
  48. except Exception as e:
  49. print('异常',e)
  50. msg = '导入失败'
  51. else:
  52. print('文件列标题不完全包含数据库需要的字段,请检查文件。')
  53. msg = '文件列标题不完全包含数据库需要的字段,请检查文件。'
  54. wb.close() # 关闭excel
  55.  
  56. return msg

使用openpyxl模块将Excel中的数据导入数据库的更多相关文章

  1. 使用Python将Excel中的数据导入到MySQL

    使用Python将Excel中的数据导入到MySQL 工具 Python 2.7 xlrd MySQLdb 安装 Python 对于不同的系统安装方式不同,Windows平台有exe安装包,Ubunt ...

  2. excel中的数据导入oracle方法

    SQL_loader批量上传数据 1.    注释 在工作中,很多时候会遇到如下情况:需要将excel中的数据批量上传到ORACLE表中.如果是小数据量,如几十条至几百条,那么用plsql dev工具 ...

  3. 详解用Navicat工具将Excel中的数据导入Mysql中

    第一步:首先需要准备好有数据的excel: 第二步:选择"文件"->"另存为",保存为"CSV(逗号分隔)(*.csv)",将exce ...

  4. c#.net Excel中的数据导入到SQL数据库中

    /// <summary>        /// 从Excel 导入学生        /// </summary>        /// <param name=&qu ...

  5. 用JDBC把Excel中的数据导入到Mysql数据库中

    步骤:0.在Mysql数据库中先建好table 1.从Excel表格读数据 2.用JDBC连接Mysql数据库 3.把读出的数据导入到Mysql数据库的相应表中 其中,步骤0的table我是先在Mys ...

  6. 用ttBulkCp把excel中的数据导入到timesten数据库中

    最近要做数据预处理,需要用到数据库.而且是以前从来没听说过的TimesTen. 首要目标是要把Excel里的数据,导入到TimesTen数据库中.而TimesTen在win10里用不了,于是我就在虚拟 ...

  7. 使用navicat for sqlserver 把excel中的数据导入到sqlserver数据库

    以前记得使用excel向mysql中导入过数据,今天使用excel向sqlserver2005导入了数据,在此把做法记录一下 第一步:准备excel数据,在这个excel中有3个sheet,每个she ...

  8. 把excel中的数据导入到数据库

    import.php <?php header("Content-Type:text/html;charset=utf-8"); echo '<html> < ...

  9. 把excel中的数据导入到Oracle数据库中

    从事工作以来,数据库一直使用oracle,却不知道excel导入oracle,今天看了一篇文章,分享给大家,希望对大家有用. https://jingyan.baidu.com/article/0f5 ...

随机推荐

  1. cnetos6上实现nfs共享

    利用空余时间,做个nfs共享实验,岂不美滋滋!!! 系统测试环境: 主机ip 系统     主机名(服务) 192.168.241.130    centos6.5    hadoop1(nfs-sr ...

  2. Ubuntu14.04 + Text-Detection-with-FRCN(CPU)

    操作系统: yt@yt-MS-:~$ cat /etc/issue Ubuntu LTS \n \l Python版本: yt@yt-MS-:~$ python --version Python pi ...

  3. 生成代码的代码 之 POJO生成器 之二 模板实现

    在之前的一篇博客中,我们写了利用node.js来生成JAVA的POJO代码的方法.有评论说可以利用模板来做这件事.当时认为模板只能做简单的字符串替换,所以可能无法完成任务.但是,仔细的学习了一个模板 ...

  4. netcore高性能Web服务器Kestrel分析

    Kestrel是aspnetcore中的web服务器之一,其本身有跨平台,轻量级,高性能的特点 在 ryzen 1600 12核cpu 测试环境中,瞬间每秒处理请求数能达到2w5以上,与netty不相 ...

  5. 集成学习算法总结----Boosting和Bagging

    1.集成学习概述 1.1 集成学习概述 集成学习在机器学习算法中具有较高的准去率,不足之处就是模型的训练过程可能比较复杂,效率不是很高.目前接触较多的集成学习主要有2种:基于Boosting的和基于B ...

  6. (转)OpenSSL CVE-2016-0800 和 CVE-2016-0703 漏洞修复细节拾趣

    原文:https://www.freebuf.com/vuls/97727.html 1. 引子 本来最近和360 Nirvan Team的DQ430愉快的参加某加密厂商的年度大会,结果openssl ...

  7. centos6 Linux安装redis 2.6.14

    1.获取安装文件 wget http://download.redis.io/redis-stable.tar.gz 2.解压文件 tar xzvf redis-stable.tar.gz 3.进入目 ...

  8. Windows server2012 IIs 8 自定义日志记录

    问题: 通过CDN加速的网站,记录日志时无法追踪源IP,日志的IP都为CDN节点ip. 分析: 1.在解析记录header时,CDN实际会把源IP以其它header的形式回传,如网宿为[Cdn-Src ...

  9. Android开发艺术探索学习笔记(一)

    第一章 Activity的生命周期和启动模式 1.1Activity的生命周期全面解析 1.1.1典型情况下的生命周期分析 (1)在两个Activity进行切换时,当前的Activity的onPaus ...

  10. Git 的4个阶段的撤销更改

    虽然git诞生距今已有12年之久,网上各种关于git的介绍文章数不胜数,但是依然有很多人(包括我自己在内)对于它的功能不能完全掌握.以下的介绍只是基于我个人对于git的理解,并且可能生编硬造了一些不完 ...