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扫描IP段查看指定端口是否开放的方法
Jun 09 Python
详解Python nose单元测试框架的安装与使用
Dec 20 Python
python逐行读写txt文件的实例讲解
Apr 03 Python
对命令行模式与python交互模式介绍
May 12 Python
Python中logging.NullHandler 的使用教程
Nov 29 Python
使用python matploblib库绘制准确率,损失率折线图
Jun 16 Python
python 绘制正态曲线的示例
Sep 24 Python
10款最佳Python开发工具推荐,每一款都是神器
Oct 15 Python
python自然语言处理之字典树知识总结
Apr 25 Python
只用Python就可以制作的简单词云
Jun 07 Python
python前后端自定义分页器
Apr 13 Python
python 使用pandas读取csv文件的方法
Dec 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的MySQL连接类
2013/06/07 PHP
解析获取优酷视频真实下载地址的PHP源代码
2013/06/26 PHP
php加密解密函数authcode的用法详细解析
2013/10/28 PHP
一组PHP加密解密函数分享
2014/06/05 PHP
PHP实现显示照片exif信息的方法
2014/07/11 PHP
深入分析PHP引用(&)
2014/09/04 PHP
PHP实现懒加载的方法
2015/03/07 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
php输出反斜杠的实例方法
2019/09/19 PHP
通过隐藏option实现select的联动效果
2009/11/10 Javascript
js substr支持中文截取函数代码(中文是双字节)
2013/04/17 Javascript
javascript动态控制服务器控件实例
2014/09/05 Javascript
JS动态改变浏览器标题的方法
2016/04/06 Javascript
jQuery插件开发汇总
2016/05/15 Javascript
Jquery针对tr td的一些实用操作方法(必看篇)
2016/10/05 Javascript
vue.js实现含搜索的多种复选框(附源码)
2017/03/23 Javascript
webpack学习笔记之优化缓存、合并、懒加载
2017/08/24 Javascript
新年快乐! javascript实现超级炫酷的3D烟花特效
2019/01/30 Javascript
JS window对象简单操作完整示例
2020/01/14 Javascript
uniapp实现可以左右滑动导航栏
2020/10/21 Javascript
[02:08]2014DOTA2国际邀请赛 430专访:力争取得小组前二
2014/07/11 DOTA
Python实现国外赌场热门游戏Craps(双骰子)
2015/03/31 Python
Python新手们容易犯的几个错误总结
2017/04/01 Python
python 字符串转列表 list 出现\ufeff的解决方法
2017/06/22 Python
python绘制圆柱体的方法
2018/07/02 Python
python 执行文件时额外参数获取的实例
2018/12/18 Python
Python 实现中值滤波、均值滤波的方法
2019/01/09 Python
详解Python中的分支和循环结构
2020/02/11 Python
全球最大的网上自行车商店:Chain Reaction Cycles
2016/12/02 全球购物
Kangol帽子官网:坎戈尔袋鼠
2018/09/26 全球购物
Theo + George官方网站:都柏林时尚品牌
2019/04/08 全球购物
本科生详细的自我评价
2013/09/19 职场文书
干部下基层实施方案
2014/03/14 职场文书
新年团拜会主持词
2014/04/02 职场文书
不同意离婚代理词
2015/05/23 职场文书
python 字典和列表嵌套用法详解
2021/06/29 Python