Python读取Excel的方法实例分析


Posted in Python onJuly 11, 2015

本文实例讲述了Python读取Excel的方法。分享给大家供大家参考。具体如下:

今天需要从一个Excel文档(.xls)中导数据到数据库的某表,开始是手工一行行输的。后来想不能一直这样,就用Python写了下面的代码,可以很方便应对这种场景。比如利用我封装的这些方法可以很方便地生成导入数据的SQL。 当然熟悉Excel编程的同学还可以直接用VBA写个脚本生成插入数据的SQL。

还可以将.xls文件改为.csv文件,然后通过SQLyog或者Navicat等工具导入进来,但是不能细粒度控制(比如不满足某些条件的某些数据不需要导入,而用程序就能更精细地控制了;又比如重复数据不能重复导入;还有比如待导入的Excel表格和数据库中的表的列不完全一致) 。

我的Python版本是3.0,需要去下载xlrd 3: http://pypi.python.org/pypi/xlrd3/ 然后通过setup.py install命令安装即可

import xlrd3
'''
author: jxqlove?
本代码主要封装了几个操作Excel数据的方法
'''
''' 
获取行视图
根据Sheet序号获取该Sheet包含的所有行,返回值类似[ ['a', 'b', 'c'], ['1', '2', '3'] ]
sheetIndex指示sheet的索引,0表示第一个sheet,依次类推
xlsFilePath是Excel文件的相对或者绝对路径
'''
def getAllRowsBySheetIndex(sheetIndex, xlsFilePath):
  workBook = xlrd3.open_workbook(xlsFilePath)
  table = workBook.sheets()[sheetIndex]
  rows = []
  rowNum = table.nrows # 总共行数
  rowList = table.row_values
  for i in range(rowNum):
    rows.append(rowList(i)) # 等价于rows.append(i, rowLists(i))
  return rows
'''
获取某个Sheet的指定序号的行
sheetIndex从0开始
rowIndex从0开始
'''
def getRow(sheetIndex, rowIndex, xlsFilePath):
  rows = getAllRowsBySheetIndex(sheetIndex, xlsFilePath)
  return rows[rowIndex]
''' 
获取列视图
根据Sheet序号获取该Sheet包含的所有列,返回值类似[ ['a', 'b', 'c'], ['1', '2', '3'] ]
sheetIndex指示sheet的索引,0表示第一个sheet,依次类推
xlsFilePath是Excel文件的相对或者绝对路径
'''
def getAllColsBySheetIndex(sheetIndex, xlsFilePath):
  workBook = xlrd3.open_workbook(xlsFilePath)
  table = workBook.sheets()[sheetIndex]
  cols = []
  colNum = table.ncols # 总共列数
  colList = table.col_values
  for i in range(colNum):
    cols.append(colList(i))
  return cols
'''
获取某个Sheet的指定序号的列
sheetIndex从0开始
colIndex从0开始
'''
def getCol(sheetIndex, colIndex, xlsFilePath):
  cols = getAllColsBySheetIndex(sheetIndex, xlsFilePath)
  return cols[colIndex]
'''
获取指定sheet的指定行列的单元格中的值
'''
def getCellValue(sheetIndex, rowIndex, colIndex, xlsFilePath):
  workBook = xlrd3.open_workbook(xlsFilePath)
  table = workBook.sheets()[sheetIndex]
  return table.cell(rowIndex, colIndex).value # 或者table.row(0)[0].value或者table.col(0)[0].value
if __name__=='__main__':
  rowsInFirstSheet = getAllRowsBySheetIndex(0, './产品.xls')
  print(rowsInFirstSheet)
  colsInFirstSheet = getAllColsBySheetIndex(0, './产品.xls')
  print(colsInFirstSheet)
  print(getRow(0, 0, './产品.xls'))
  # 获取第一个sheet第一行的数据
  print(getCol(0, 0, './产品.xls'))
  # 获取第一个sheet第一列的数据
  print(getCellValue(0, 3, 2, './产品.xls'))
  # 获取第一个sheet第四行第二列的单元格的值

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python实现过滤单个Android程序日志脚本分享
Jan 16 Python
python下读取公私钥做加解密实例详解
Mar 29 Python
python编写朴素贝叶斯用于文本分类
Dec 21 Python
Django给admin添加Action的步骤详解
May 01 Python
在django中图片上传的格式校验及大小方法
Jul 28 Python
Python中turtle库的使用实例
Sep 09 Python
Python Django2.0集成Celery4.1教程
Nov 19 Python
python中return的返回和执行实例
Dec 24 Python
关于Theano和Tensorflow多GPU使用问题
Jun 19 Python
python之语音识别speech模块
Sep 09 Python
python打包生成so文件的实现
Oct 30 Python
Python如何识别银行卡卡号?
Jun 10 Python
Python实现分割文件及合并文件的方法
Jul 10 #Python
Python写入数据到MP3文件中的方法
Jul 10 #Python
Python将阿拉伯数字转换为罗马数字的方法
Jul 10 #Python
Python自动登录126邮箱的方法
Jul 10 #Python
Python获取邮件地址的方法
Jul 10 #Python
python实现中文分词FMM算法实例
Jul 10 #Python
Python实现的最近最少使用算法
Jul 10 #Python
You might like
dede全站URL静态化改造[070414更正]
2007/04/17 PHP
php循环检测目录是否存在并创建(循环创建目录)
2011/01/06 PHP
PHP中遍历stdclass object的实现代码
2011/06/09 PHP
两级联动select刷新后其值保持不变的实现方法
2014/01/27 PHP
浅析Yii2 gridview实现批量删除教程
2016/04/22 PHP
浅析PHP中的i++与++i的区别及效率
2016/06/15 PHP
PHP实现二维数组按某列进行排序的方法
2016/11/18 PHP
详解PHP防止盗链防止迅雷下载的方法
2017/04/26 PHP
php生成复杂验证码(倾斜,正弦干扰线,黏贴,旋转)
2018/03/12 PHP
jQuery 选择器理解
2010/03/16 Javascript
基于jQuery.Validate验证库知识点的详解
2013/04/26 Javascript
javascript制作坦克大战全纪录(1)
2014/11/27 Javascript
Jquery动态替换div内容及动态展示的方法
2015/01/23 Javascript
javascript关于open.window子页面执行完成后刷新父页面的问题分析
2015/04/27 Javascript
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
2016/05/19 Javascript
angularjs ocLazyLoad分步加载js文件实例
2017/01/17 Javascript
Bootstrap免费字体和图标网站(值得收藏)
2017/03/16 Javascript
JavaScript实现图片切换效果
2017/08/12 Javascript
深入Node TCP模块的理解
2019/03/13 Javascript
vue $router和$route的区别详解
2020/12/02 Vue.js
绘制微信小程序验证码功能的实例代码
2021/01/05 Javascript
[01:07:53]RNG vs VG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python中psutil的介绍与用法
2019/05/02 Python
python类中super() 的使用解析
2019/12/19 Python
python实现梯度法 python最速下降法
2020/03/24 Python
Python自动化操作实现图例绘制
2020/07/09 Python
解决html5中的video标签ios系统中无法播放使用的问题
2020/08/10 HTML / CSS
家庭户外服装:Hawkshead
2017/11/02 全球购物
医院护理人员的自我评价分享
2013/10/04 职场文书
优秀的计算机专业求职信范文
2013/12/27 职场文书
周年庆典邀请函范文
2014/01/24 职场文书
工伤赔偿协议书
2014/04/15 职场文书
房产协议书范本2014
2014/09/30 职场文书
2015年度房地产工作总结
2015/04/09 职场文书
《青山不老》教学反思
2016/02/22 职场文书
CSS作用域(样式分割)的使用汇总
2021/11/07 HTML / CSS