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的内建模块collections的教程
Apr 28 Python
Python文件及目录操作实例详解
Jun 04 Python
tornado 多进程模式解析
Jan 15 Python
PyQt5每天必学之工具提示功能
Apr 19 Python
python http基本验证方法
Dec 26 Python
对pandas写入读取h5文件的方法详解
Dec 28 Python
Python的numpy库下的几个小函数的用法(小结)
Jul 12 Python
Django基础知识 web框架的本质详解
Jul 18 Python
python Django编写接口并用Jmeter测试的方法
Jul 31 Python
pandas按行按列遍历Dataframe的几种方式
Oct 23 Python
聊聊python中的循环遍历
Sep 07 Python
pandas求平均数和中位数的方法实例
Aug 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生成数组再传给js的方法
2014/08/07 PHP
PHP+MySql实现一个简单的留言板
2020/07/19 PHP
javascript 对象的定义方法
2007/01/10 Javascript
jquery each()源代码
2011/02/14 Javascript
JQuery验证工具类搜集整理
2013/01/16 Javascript
两个listbox实现选项的添加删除和搜索
2013/03/01 Javascript
Javascript中valueOf与toString区别浅析
2013/03/19 Javascript
js跑马灯代码(自写)
2013/04/17 Javascript
Jquery封装tab自动切换效果的具体实现
2013/07/13 Javascript
浅谈javascript六种数据类型以及特殊注意点
2013/12/20 Javascript
JavaScript异步回调的Promise模式封装实例
2014/06/07 Javascript
JavaScript数组随机排列实现随机洗牌功能
2015/03/19 Javascript
jQuery实现返回顶部效果的方法
2015/05/29 Javascript
JavaScript制作淘宝星级评分效果的思路
2020/06/23 Javascript
jquery ajax双击div可直接修改div中的内容
2016/03/04 Javascript
详解Node.js模块间共享数据库连接的方法
2016/05/24 Javascript
VueJS全面解析
2016/11/10 Javascript
jquery PrintArea 实现票据的套打功能(代码)
2017/03/17 Javascript
基于JavaScript实现幸运抽奖页面
2020/07/05 Javascript
angular 未登录状态拦截路由跳转的方法
2018/10/09 Javascript
详解Vue-axios 设置请求头问题
2018/12/06 Javascript
vue 扩展现有组件的操作
2020/08/14 Javascript
python3实现读取chrome浏览器cookie
2016/06/19 Python
python验证码识别的实例详解
2016/09/09 Python
Python之Web框架Django项目搭建全过程
2017/05/02 Python
python中的set实现不重复的排序原理
2018/01/24 Python
opencv python 2D直方图的示例代码
2018/07/20 Python
Django用户认证系统 User对象解析
2019/08/02 Python
python、PyTorch图像读取与numpy转换实例
2020/01/13 Python
在Tensorflow中查看权重的实现
2020/01/24 Python
Keras搭建自编码器操作
2020/07/03 Python
浅谈CSS3中的变形功能-transform功能
2017/12/27 HTML / CSS
无谷物狗粮:Pooch & Mutt
2018/05/23 全球购物
保证书范文大全
2014/04/28 职场文书
银行服务明星推荐材料
2014/05/29 职场文书
体育教育毕业生自荐信
2014/06/29 职场文书