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根据开头和结尾字符串获取中间字符串的方法
Mar 26 Python
初步探究Python程序的执行原理
Apr 11 Python
Python内存读写操作示例
Jul 18 Python
python-itchat 统计微信群、好友数量,及原始消息数据的实例
Feb 21 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
Aug 26 Python
Python如何基于selenium实现自动登录博客园
Dec 16 Python
python dataframe NaN处理方式
Dec 26 Python
tensorflow实现读取模型中保存的值 tf.train.NewCheckpointReader
Feb 10 Python
python实现简单井字棋游戏
Mar 04 Python
python两种获取剪贴板内容的方法
Nov 06 Python
Pyhton模块和包相关知识总结
May 12 Python
Python中seaborn库之countplot的数据可视化使用
Jun 11 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
解决File size limit exceeded 错误的方法
2013/06/14 PHP
PHP字符串长度计算 - strlen()函数使用介绍
2013/10/15 PHP
PHP的openssl加密扩展使用小结(推荐)
2016/07/18 PHP
PHP如何根据文件头检测文件类型实例代码
2018/10/14 PHP
JS 对象介绍
2010/01/20 Javascript
JS中showModalDialog 的使用解析
2013/04/17 Javascript
jquery实现div拖拽宽度示例代码
2013/07/31 Javascript
JS显示下拉列表框内全部元素的方法
2015/03/31 Javascript
JS使用post提交的两种方式
2015/12/03 Javascript
js针对ip地址、子网掩码、网关的逻辑性判断
2016/01/06 Javascript
Jquery on方法绑定事件后执行多次的解决方法
2016/06/02 Javascript
JSON字符串和对象相互转换实例分析
2016/06/16 Javascript
JS弹出新窗口被拦截的解决方法
2016/08/09 Javascript
jQuery实现链接的title快速出现的方法
2017/02/20 Javascript
详解ES6语法之可迭代协议和迭代器协议
2018/01/13 Javascript
基于Vue 2.0 监听文本框内容变化及ref的使用说明介绍
2018/08/24 Javascript
详解使用webpack+electron+reactJs开发windows桌面应用
2019/02/01 Javascript
详解使用Python处理文件目录的相关方法
2015/10/16 Python
Python三种遍历文件目录的方法实例代码
2018/01/19 Python
python 字符串常用函数详解
2019/09/11 Python
Python安装tar.gz格式文件方法详解
2020/01/19 Python
在pycharm中debug 实时查看数据操作(交互式)
2020/06/09 Python
将tf.batch_matmul替换成tf.matmul的实现
2020/06/18 Python
详解使用双缓存解决Canvas clearRect引起的闪屏问题
2019/04/29 HTML / CSS
钉钉企业内部H5微应用开发详解
2020/05/12 HTML / CSS
美国家用电器和电子产品商店:Abt
2016/09/06 全球购物
酒店销售主管岗位职责
2014/01/04 职场文书
环保倡议书范文
2014/05/12 职场文书
现场活动策划方案
2014/08/22 职场文书
中职三好学生事迹材料
2014/08/24 职场文书
党支部组织生活会整改方案
2014/09/30 职场文书
乡镇计划生育工作汇报
2014/10/28 职场文书
给客户的检讨书
2014/12/21 职场文书
出纳试用期工作总结2015
2015/05/28 职场文书
个人售房合同协议书
2016/03/21 职场文书
MySQL 亿级数据导入导出及迁移笔记
2021/06/18 MySQL