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 学习笔记
Dec 27 Python
python中argparse模块用法实例详解
Jun 03 Python
Python在线运行代码助手
Jul 15 Python
Python 实现删除某路径下文件及文件夹的实例讲解
Apr 24 Python
python中验证码连通域分割的方法详解
Jun 04 Python
Windows下PyCharm安装图文教程
Aug 27 Python
使用Filter过滤python中的日志输出的实现方法
Jul 17 Python
Python 实现文件读写、坐标寻址、查找替换功能
Sep 11 Python
python如何查看安装了的模块
Jun 23 Python
python如何爬取动态网站
Sep 09 Python
python实现web邮箱扫描的示例(附源码)
Mar 30 Python
详解Python描述符的工作原理
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
使用PHP制作新闻系统的思路
2006/10/09 PHP
Laravel框架路由设置与使用示例
2018/06/12 PHP
laravel5.6实现数值转换
2019/10/23 PHP
PHP dirname功能及原理实例解析
2020/10/28 PHP
用 JSON 处理缓存
2007/04/27 Javascript
form中限制文本字节数js代码
2007/06/10 Javascript
js 3秒后跳转页面的实现代码
2014/03/10 Javascript
浅谈Javascript数据属性与访问器属性
2016/07/26 Javascript
实例解析jQuery中如何取消后续执行内容
2016/12/01 Javascript
vue基于element-ui的三级CheckBox复选框功能的实现代码
2018/10/15 Javascript
[51:20]完美世界DOTA2联赛PWL S2 Magma vs PXG 第一场 11.28
2020/12/01 DOTA
python thread 并发且顺序运行示例
2009/04/09 Python
python教程之用py2exe将PY文件转成EXE文件
2014/06/12 Python
Python中的魔法方法深入理解
2014/07/09 Python
Python三元运算实现方法
2015/01/12 Python
详解Python使用simplejson模块解析JSON的方法
2016/03/24 Python
python解决Fedora解压zip时中文乱码的方法
2016/09/18 Python
Django组件cookie与session的具体使用
2019/06/05 Python
详解pyppeteer(python版puppeteer)基本使用
2019/06/12 Python
Python使用sklearn库实现的各种分类算法简单应用小结
2019/07/04 Python
Python3 hashlib密码散列算法原理详解
2020/03/30 Python
利用python绘制数据曲线图的实现
2020/04/09 Python
使用Python封装excel操作指南
2021/01/29 Python
python爬虫如何解决图片验证码
2021/02/14 Python
健身场所或家用健身设备:Life Fitness
2017/11/01 全球购物
好莱坞百老汇御用王牌美妆:Koh Gen Do 江原道
2018/04/03 全球购物
LivingSocial爱尔兰:爱尔兰本地优惠
2018/08/10 全球购物
美国购买韩国护肤和美容产品网站:Althea Korea
2020/11/16 全球购物
英语专业毕业个人求职自荐信
2013/09/21 职场文书
信息专业个人的自我评价
2013/12/27 职场文书
优秀村官事迹材料
2014/01/10 职场文书
大班开学家长寄语
2014/04/04 职场文书
机关干部个人对照检查材料思想汇报
2014/09/28 职场文书
2019财务毕业实习报告
2019/06/27 职场文书
导游词之泉州崇武古城
2019/12/20 职场文书
Go语言基础map用法及示例详解
2021/11/17 Golang