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中使用glob和rmtree删除目录子目录及所有文件的例子
Nov 21 Python
Django中实现点击图片链接强制直接下载的方法
May 14 Python
python中循环语句while用法实例
May 16 Python
用pickle存储Python的原生对象方法
Apr 28 Python
使用Python监控文件内容变化代码实例
Jun 04 Python
python2与python3的print及字符串格式化小结
Nov 30 Python
python实现石头剪刀布程序
Jan 20 Python
python使用selenium实现批量文件下载
Mar 11 Python
详解Python 4.0 预计推出的新功能
Jul 26 Python
Tensorflow:转置函数 transpose的使用详解
Feb 11 Python
使用sklearn的cross_val_score进行交叉验证实例
Feb 28 Python
通过实例解析Python return运行原理
Mar 04 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
如何获得PHP相关资料
2006/10/09 PHP
PHP Memcached + APC + 文件缓存封装实现代码
2010/03/11 PHP
Server.HTMLEncode让代码在页面里显示为源代码
2013/12/08 PHP
ExtJs默认的字体大小改变的几种方法(自己整理)
2013/04/18 Javascript
Jquery 类网页微信二维码图块滚动效果具体实现
2013/10/14 Javascript
JQuery中使文本框获得焦点的方法实例分析
2015/02/28 Javascript
Javascript递归打印Document层次关系实例分析
2015/05/15 Javascript
JavaScript实现仿淘宝商品购买数量的增减效果
2016/01/22 Javascript
基于JavaScript判断浏览器到底是关闭还是刷新(超准确)
2016/02/01 Javascript
bootstrap flask登录页面编写实例
2016/11/01 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(同步显示图像位置信息)
2016/12/02 Javascript
JS异步文件上传(兼容IE8+)
2017/04/02 Javascript
vue.js利用defineProperty实现数据的双向绑定
2017/04/28 Javascript
详解vue 动态加载并注册组件且通过 render动态创建该组件
2019/05/30 Javascript
vue2路由基本用法实例分析
2020/03/06 Javascript
解决vuex数据页面刷新后初始化操作
2020/07/26 Javascript
[34:47]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第一场 11.18
2020/11/18 DOTA
python获取文件扩展名的方法
2015/07/06 Python
Python压缩解压缩zip文件及破解zip文件密码的方法
2015/11/04 Python
Python竟能画这么漂亮的花,帅呆了(代码分享)
2017/11/15 Python
为什么选择python编程语言入门黑客攻防 给你几个理由!
2018/02/02 Python
详解利用Python scipy.signal.filtfilt() 实现信号滤波
2019/06/05 Python
如何用Python制作微信好友个性签名词云图
2019/06/28 Python
Python读取Excel数据并生成图表过程解析
2020/06/18 Python
css3实现椭圆轨迹旋转的示例代码
2018/10/29 HTML / CSS
英国知名奢侈品包包品牌:Milli Millu
2016/12/22 全球购物
Expedia印度:您的一站式在线旅游网站
2017/08/24 全球购物
Rowdy Gentleman服装和配饰:美好时光
2019/09/24 全球购物
预备党员党校学习自我评价分享
2013/11/12 职场文书
大学本科毕业生的自我鉴定范文
2013/11/19 职场文书
高中社区服务活动报告
2015/02/05 职场文书
2019年第四季度财务部门工作计划
2019/11/02 职场文书
CocosCreator入门教程之网络通信
2021/04/16 Javascript
使用numpy实现矩阵的翻转(flip)与旋转
2021/06/03 Python
MongoDB数据库的安装步骤
2021/06/18 MongoDB
关于python爬虫应用urllib库作用分析
2021/09/04 Python