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中函数的参数
Apr 27 Python
Python实现爬取逐浪小说的方法
Jul 07 Python
Python实现的文本简单可逆加密算法示例
May 18 Python
Python数据结构与算法之图结构(Graph)实例分析
Sep 05 Python
Django 2.0版本的新特性抢先看!
Jan 05 Python
浅谈Series和DataFrame中的sort_index方法
Jun 07 Python
django利用request id便于定位及给日志加上request_id
Aug 26 Python
Python sklearn KFold 生成交叉验证数据集的方法
Dec 11 Python
python使用PIL和matplotlib获取图片像素点并合并解析
Sep 10 Python
Python 3 使用Pillow生成漂亮的分形树图片
Dec 24 Python
在PyTorch中使用标签平滑正则化的问题
Apr 03 Python
python编程的核心知识点总结
Feb 08 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 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
2011/07/17 PHP
新浪微博API开发简介之用户授权(PHP基础篇)
2011/09/25 PHP
ThinkPHP的Widget扩展实例
2014/06/19 PHP
Laravel5中contracts详解
2015/03/02 PHP
功能强大的PHP发邮件类
2016/08/29 PHP
动态创建的表格单元格中的事件实现代码
2008/12/30 Javascript
js 格式化时间日期函数小结
2010/03/20 Javascript
S2SH整合JQuery+Ajax实现登录验证功能实现代码
2013/01/30 Javascript
JS实现的竖向折叠菜单代码
2015/10/21 Javascript
Javascript编程之继承实例汇总
2015/11/28 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(二)
2016/02/16 Javascript
JavaScript数据操作_浅谈原始值和引用值的操作本质
2016/08/23 Javascript
浅谈vue-router2路由参数注意的问题
2017/11/08 Javascript
vue 将页面公用的头部组件化的方法
2017/12/18 Javascript
微信小程序第三方框架对比 之 wepy / mpvue / taro
2019/04/10 Javascript
微信小程序云开发实现数据添加、查询和分页
2019/05/17 Javascript
vue2 拖动排序 vuedraggable组件的实现
2019/08/08 Javascript
微信小程序实现日历签到
2020/09/21 Javascript
javascript实现数字时钟效果
2021/02/06 Javascript
Python使用smtplib模块发送电子邮件的流程详解
2016/06/27 Python
python多线程并发实例及其优化
2019/06/27 Python
Django框架安装方法图文详解
2019/11/04 Python
解析PyCharm Python运行权限问题
2020/01/08 Python
pycharm专业版远程登录服务器的详细教程
2020/09/15 Python
比较基础的php面试题及答案-填空题
2014/04/26 面试题
行政主管职责范本
2014/03/07 职场文书
优秀毕业生自荐信
2014/06/10 职场文书
学校节能减排方案
2014/06/13 职场文书
小学安全汇报材料
2014/08/14 职场文书
2015年新农合工作总结
2015/03/30 职场文书
辩论会主持词
2015/07/03 职场文书
公安忠诚教育心得体会
2016/01/23 职场文书
八年级物理教学反思
2016/02/19 职场文书
关于感恩老师的古诗句
2019/08/20 职场文书
正确使用MySQL INSERT INTO语句
2021/05/26 MySQL
ubuntu安装jupyter并设置远程访问的实现
2022/03/31 Python