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中List的sort方法指南
Sep 01 Python
Python实现程序的单一实例用法分析
Jun 03 Python
Linux RedHat下安装Python2.7开发环境
May 20 Python
Python下实现的RSA加密/解密及签名/验证功能示例
Jul 17 Python
python入门前的第一课 python怎样入门
Mar 06 Python
Python采集代理ip并判断是否可用和定时更新的方法
May 07 Python
django 将model转换为字典的方法示例
Oct 16 Python
python3 打印输出字典中特定的某个key的方法示例
Jul 06 Python
Flask教程之重定向与错误处理实例分析
Aug 01 Python
解决pycharm下pyuic工具使用的问题
Apr 08 Python
Python xpath表达式如何实现数据处理
Jun 13 Python
Python爬虫如何应对Cloudflare邮箱加密
Jun 24 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中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
2012/09/07 PHP
CI框架中cookie的操作方法分析
2014/12/12 PHP
两款万能的php分页类
2015/11/12 PHP
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)
2016/03/21 PHP
PHP进程通信基础之信号量与共享内存通信
2017/02/19 PHP
关于 byval 与 byref 的区别分析总结
2007/10/08 Javascript
Highcharts使用简例及异步动态读取数据
2015/12/30 Javascript
8 行 Node.js 代码实现代理服务器
2016/12/05 Javascript
AngularJs 利用百度地图API 定位当前位置 获取地址信息
2017/01/18 Javascript
vue.js 初体验之Chrome 插件开发实录
2017/05/13 Javascript
vue权限路由实现的方法示例总结
2018/07/29 Javascript
JS使用canvas中的measureText方法测量字体宽度示例
2019/02/02 Javascript
js设置鼠标悬停改变背景色实现详解
2019/06/26 Javascript
微信小程序自定义tabbar custom-tab-bar 6s出不来解决方案(cover-view不兼容)
2019/11/01 Javascript
原生JavaScript实现进度条
2021/02/19 Javascript
[08:17]Ti9 现场cosplay
2019/09/10 DOTA
Python实现豆瓣图片下载的方法
2015/05/25 Python
python+requests+unittest API接口测试实例(详解)
2017/06/10 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
2017/11/11 Python
python去除文件中重复的行实例
2018/06/29 Python
使用pip发布Python程序的方法步骤
2018/10/11 Python
python爬虫之urllib库常用方法用法总结大全
2018/11/14 Python
Python安装Flask环境及简单应用示例
2019/05/03 Python
python爬虫租房信息在地图上显示的方法
2019/05/13 Python
使用python3调用wxpy模块监控linux日志并定时发送消息给群组或好友
2019/06/05 Python
如何爬取通过ajax加载数据的网站
2019/08/15 Python
python tkinter图形界面代码统计工具(更新)
2019/09/18 Python
TensorFlow 读取CSV数据的实例
2020/02/05 Python
Python里面search()和match()的区别
2016/09/21 面试题
中学教师请假制度
2014/02/03 职场文书
向领导表决心的话
2014/03/11 职场文书
找工作求职信
2014/07/07 职场文书
2014年煤矿安全工作总结
2014/12/04 职场文书
暑期实践个人总结
2015/03/06 职场文书
朋友圈早安励志语录!
2019/07/08 职场文书
Python批量解压&压缩文件夹的示例代码
2022/04/04 Python