前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Python解析excel文件并存入sqlite数据库

Python解析excel文件并存入sqlite数据库

作者头像
oYabea
发布于 2020-09-07 03:36:12
发布于 2020-09-07 03:36:12
2.4K00
代码可运行
举报
文章被收录于专栏:夏天爱西瓜夏天爱西瓜
运行总次数:0
代码可运行

最近由于工作上的需求 需要使用Python解析excel文件并存入sqlite 就此做个总结 功能: 1.数据库设计 建立数据库 2.Python解析excel文件 3.Python读取文件名并解析 4.将解析的数据存储入库

一 建立数据库

根据需求建立数据库,建立了两个表,并保证了可以将数据存储到已有的数据库中,代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import sqlite3

def createDataBase():
cn = sqlite3.connect('check.db')

cn.execute('''CREATE TABLE IF NOT EXISTS TB_CHECK
(ID integer PRIMARY KEY AUTOINCREMENT,
NUMBER INTEGER,
ITEM TEXT,
REFERENCE TEXT,
SUMMARY TEXT,
OBJECT TEXT,
METHOD TEXT,
CONDITION TEXT,
VALUE TEXT,
RESULT TEXT,
SCORE TEXT,
REMARKS TEXT,
PROVINCE TEXT,
TIME TEXT);''')

cn.execute('''CREATE TABLE IF NOT EXISTS TB_SCORE
(ID integer PRIMARY KEY AUTOINCREMENT,
PROVINCE TEXT,
TIME TEXT,
FILETYPE TEXT,
SCORE INTEGER);''')

if __name__ == '__main__':
createDataBase()

二 使用Python解析excel

Python中的xlrd模块用来解析excel。相关功能介绍如下: 1. 导入 import xlrd 2. 读取数据 data = xlrd.open_workbook('file.xls') 3. 功能 (1) 通过索引获取 table = data.sheet()[0] table = data.sheet_by_index(0) (2)通过名称获取 table = data.sheet_by_name(u'sheet1') (3)获取整行和整列的值(数组) table.row_values(i) table.col_values(i) (4)获取行数和列数 nrows = table.nrows ncols = table.ncols (5)循环行列表数据 for i in range(nrows): print table.row_values(i) (6)单元格 cell_A1 = table.cell(0,0).value (7)使用行列索引 cell_A1 = table.cell(0,0).value

练习代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import xlrd
import xlwt
from datetime import date,datetime

def read_excel():
# 打开文件
workbook = xlrd.open_workbook(r'file.xls')
# 获取所有sheet
sheet_name = workbook.sheet_names()[0]
sheet = workbook.sheet_by_name(sheet_name)

#获取一行的内容
for i in range(6,sheet.nrows):
for j in range(0,sheet.ncols):
print sheet.cell(i,j).value.encode('utf-8')

if __name__ == '__main__':
read_excel()

三 Python读取文件名并解析

为了将各个文件的数据加以区分,需要将文件名中标志性字段入库,解析文件的代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import os

def getFileList(dir,wildcard,recursion):
    os.chdir(dir)

    fileList = []
    check_province = []
    check_time = []
    file_type = []

    exts = wildcard.split(" ")
    files = os.listdir(dir)
    for name in files:
        fullname=os.path.join(dir,name)
        if(os.path.isdir(fullname) & recursion):
            getFileList(fullname,wildcard,recursion)
        else:
            for ext in exts:
                if(name.endswith(ext)):
                    fileList.append(name)
                    check_province.append(name.split('-')[1])
                    check_time.append(name.split('-')[0])
                    file_type.append(name.split('-')[2])
    return fileList,check_time,check_province,file_type

在接下来的使用中 会遇到编码问题 所以在使用这些字段时需要先转码,编写转码函数如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#转码函数
def changeCode(name):
      name = name.decode('GBK')
      name = name.encode('UTF-8')
      return name

四 解析excel文件并将其存储到sqlite   Python连接数据库 选取了Python自带的sqlite数据库 相对简单 在此不做太多介绍 如果大家对Python操作sqlite有疑惑的话 个人推荐菜鸟教程~

  下面是解析excel文件并存入数据库,其中包含了判断单元格内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def readExcel(filename,cn,check_province,check_time,FileType):
  #读取
  workbook = xlrd.open_workbook(filename)
  # 获取sheet
  sheet_name = workbook.sheet_names()[0]
    sheet = workbook.sheet_by_name(sheet_name)

  check_Item = 'a'

  itemCount = 0
  score = 0

  second = sheet.cell(7,1).value.encode('utf-8')

  for i in range(7,sheet.nrows):
      if sheet.cell(i,1).value.encode('utf-8') == second:
          check_Item = sheet.cell(i,0).value.encode('utf-8')
          continue

      temp = []
      for j in range(0,sheet.ncols):
          temp.append(sheet.cell(i,j).value.encode('utf-8'))

      answer = sheet.cell(i,7).value.encode('utf-8')

      if answer == "yes" or answer == "no":
          score = score + 1

      if answer == "other":
          print "!!!Failed to import'%s'" % (filename)
          print "!!!Please Choose an Right Answer for '%s'--------"%(filename)
          break
      else:
          cn.execute("insert into TB_CHECK (ITEM,FIELD,TYPE,CONTENT,"
                     "ATTRIBUTE,CHECKPOINT,REMARKS,ANSWER,DESCRIPTION,"
                     "SUGGESTION,PROVINCE,TIME,STYLE) "
                     "values('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')"
                     ""%(temp[0],temp[1],temp[2],temp[3],temp[4],temp[5],temp[6],temp[7],temp[8],temp[9],check_province,check_time,check_Item))

          itemCount = itemCount + 1
  if itemCount != 0:
      score = round(score * (100 / itemCount), 2)
      cn.execute("insert into TB_SCORE (PROVINCE,TIME,FILETYPE,SCORE) "
             "values('%s','%s','%s','%.2f')"%(check_province,check_time,FileType,score))
      print "Successful for'%s'--------" % (filename)
  cn.commit()

整合上述功能:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def importData(path):
    # 数据库
    createDataBase()
    database = sqlite3.connect("check.db")

    #文件类型
    wildcard = ".xls"

    list = getFileList(path,wildcard,1)

    nfiles = len(list[0])
    #文件名
    file = list[0]
    #时间
    time = list[1]
    #省份
    province = list[2]
    # #文件类型
    FileType = list[3]

    for count in range(0,nfiles):
        filename = file[count]
        check_province = changeCode(province[count])
        check_time = time[count]
        File_type = changeCode(FileType[count])
        readExcel(filename,database,check_province,check_time,File_type)

if __name__ == '__main__':
    if len(sys.argv) != 2:
        print "Wrong Parameters"
    else:
        path = sys.argv[1]
        importData(path)

这就是解析excel文件并存入sqlite的主要代码 完整代码见:https://github.com/Ben0825/Python

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-05-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python处理Excel数据的方法[通俗易懂]
当Excel中有大量需要进行处理的数据时,使用Python不失为一种便捷易学的方法。接下来,本文将详细介绍多种Python方法来处理Excel数据。
全栈程序员站长
2022/11/18
5.5K0
【4】python读写文件操作---详细讲解!
python读写文件详细讲解! 1.操作xls格式的表格文件: 读取:xlrd 写入:xlwt 修改(追加写入):xlutils 2.操作xlsx格式的表格文件: 读取/写入:openpyxl 一. 读取Excel 1. 导入读取库 import xlrd 2. 打开Excel文件读取数据 data = xlrd.open_workbook('xxx.xls') 3. 获取一个工作表 table = data.sheets()[0] #通过索引顺序获取 table = data
汀丶人工智能
2022/12/21
1.2K0
【4】python读写文件操作---详细讲解!
最全总结 | 聊聊 Python 办公自动化之 Excel(上)
但是,经常会遇到一些重复繁琐的事情,这时候手工操作显得效率极其低下;通过 Python 实现办公自动化变的很有必要
AirPython
2020/11/03
1.5K0
最全总结 | 聊聊 Python 办公自动化之 Excel(上)
Python读取excel三大常用模块到底谁最快,附上详细使用代码
之前分享过python调用过ppt和word,作为一家人的excel当然要整整齐齐的安排上
行哥玩Python
2020/07/14
85.8K1
python 操作excel(附案例)
常见读写excel 的库有以下 几个(附案例) xlwt xlrd xlutils openpyxl pandas xlwt 主要用于对xls文件进行写入操作 import xlwt #创建workbook book = xlwt.Workbook() #添加sheet页 table = book.add_sheet('Over', cell_overwrite_ok=True) sheet = book.add_sheet('测试表') print(type(table)) print(table)
Python研究者
2020/09/28
7440
python3实现excel里面读数据进
一、数据: 名称 空气质量 污染程度 其他 得分 上海 44.5 8.151949 14.46154 67.11349 北京 34 8.095238 15.15873 57.25397 广州 33 10.23364 13.27103 56.50467 成都 38.5 10.2129 15.94406 64.65695 武汉 42.5 13.26796 18.52273 74.29069 南京 50 7.461452 14.63576 72.09721 重庆 50 11.16099 15.21127 76.
py3study
2020/01/03
3140
9.python3实用编程技巧进阶(四)
4.1.如何读写csv数据  爬取豆瓣top250书籍 import requests import json import csv from bs4 import BeautifulSoup books = [] def book_name(url): res = requests.get(url) html = res.text soup = BeautifulSoup(html, 'html.parser') items = soup.find(class_="gr
zhang_derek
2019/08/21
4270
9.python3实用编程技巧进阶(四)
使用python操作excel
python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库。
步履不停凡
2021/07/01
1.2K0
Python读取写入数据到Excel文件
程序员洲洲
2024/06/07
890
[306]python操作excel表格(xlrd/xlwt)
python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库。可从这里下载https://pypi.python.org/pypi。下面分别记录python读和写excel.
周小董
2022/04/12
2.5K0
[306]python操作excel表格(xlrd/xlwt)
Python操作Excel
常用的方式 常用的读写Excel的库: pandas openpyxl xlrd/xlwt/xlutils 使用它们都能够达到读写Excel的目的,但它们的侧重点又略有不同。 具体如下: pandas:数据处理最常用的分析库之一,可以读取各种各样格式的数据文件,一般输出dataframe格式,功能强大 openpyxl:主要针对xlsx格式的excel进行读取和编辑 xlrd库:从excel中读取数据,支持xls、xlsx xlwt库:对excel进行修改操作,不支持对xlsx格式的修改 xlutils库:
码客说
2022/01/17
1.4K0
全网最完整的Python操作Excel数据封装函数
对比其它编程语言,我们都知道Python最大的优势是代码简单,有丰富的第三方开源库供开发者使用。伴随着近几年数据分析的热度,Python也成为最受欢迎的编程语言之一。而对于数据的读取和存储,对于普通人来讲,除了数据库之外,最常见的就是微软的Excel。
用户8544541
2022/01/27
1.6K0
全网最完整的Python操作Excel数据封装函数
【Python】测试造数--Excel操作
读取 excel 表格数据,支持 xlsx 和 xls 格式的 excel 表格。
用户9913368
2022/08/13
3150
【Python】测试造数--Excel操作
python操作excel的几种插件对比
     2.xlwt保存的表格后缀必须为xls,而openpyxl可保存xlsx和xls
py3study
2020/01/08
1.5K0
有哪些你不知道的python小工具
python作为越来越流行的一种编程语言,不仅仅是因为它语言简单,有许多现成的包可以直接调用。
py3study
2020/01/17
7000
python中常见关于Excel表格读写操作
最近在写项目,刚好要运用到excel表格的一些读写,顺便总结一下我以前学过的几个关于表格的操作。在写项目中,经常会见到页面中数据导出到表格中,同时,也会有经常在表格中填写测试用例,然后获取数据来做自动化测试的情况,那就我目前会的几种做一个总结吧~
小雯子打豆豆
2020/08/04
1.5K0
python中常见关于Excel表格读写操作
Python 接口测试之Excel表格数据操作方法封装
  我们在做接口测试,经常会用到excel去管理测试数据,对Excel的操作比较频繁,那么使用python如何操作Excel文件的读与写呢?由于之前讲的都是大的框框,没有讲这么小的模块使用,现在就化整为0的讲解。
全栈测试开发日记
2023/02/18
6240
Python 接口测试之Excel表格数据操作方法封装
windows下python3 使用cx_Oracle,xlrd插件进行excel数据清洗录入
我们在做数据分析,清洗的过程中,很多时候会面对各种各样的数据源,要针对不同的数据源进行清洗,入库的工作。当然python这个语言,我比较喜欢,开发效率高,基本上怎么写都能运行,而且安装配置简单,基本上有网的环境pip install全部都搞定,没网的话,把whl包copy过来一行命令也就解决了( windows下python3.5使用pip离线安装whl包)。
流川疯
2019/01/18
8430
python高手是如何处理excel文件
用python来自动生成excel数据文件。python处理excel文件主要是第三方模块库xlrd、xlwt、xluntils和pyExcelerator,除此之外,python处理excel还可以用win32com和openpyxl模块。
程序员鑫港
2021/12/25
9300
python操作Excel,你觉得哪个库更好呢?
每一个Excel数据文件从上至下分为三个层级的对象: workbook: 每一个Excel文件就是一个workbook。 sheet: 每一个workbook中可以包含多个sheet,具体就对应Excel中我们在左下脚所看到的“sheet1”,“sheet2”等。 cell: 每一个sheet就是我们通常所看到的一个表格,可以含有m行,n列,每个确定的行号,列号所对应的一个格子就是一个cell。
星星在线
2018/08/21
12.5K0
python操作Excel,你觉得哪个库更好呢?
推荐阅读
相关推荐
Python处理Excel数据的方法[通俗易懂]
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文