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 相关文章推荐
在Python3中使用asyncio库进行快速数据抓取的教程
Apr 02 Python
在Python上基于Markov链生成伪随机文本的教程
Apr 17 Python
python协程用法实例分析
Jun 04 Python
基于Python os模块常用命令介绍
Nov 03 Python
python导出chrome书签到markdown文件的实例代码
Dec 27 Python
Python+树莓派+YOLO打造一款人工智能照相机
Jan 02 Python
Python依赖包整体迁移方法详解
Aug 15 Python
Python函数默认参数常见问题及解决方案
Mar 26 Python
keras 读取多标签图像数据方式
Jun 12 Python
基于Python实现简单学生管理系统
Jul 24 Python
Python如何实现机器人聊天
Sep 10 Python
Matplotlib animation模块实现动态图
Feb 25 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
Zerg建筑一览
2020/03/14 星际争霸
PHP 工厂模式使用方法
2010/05/18 PHP
php实现银联商务公众号+服务窗支付的示例代码
2019/10/12 PHP
JavaScript为对象原型prototype添加属性的两种方式
2010/08/01 Javascript
用函数模板,写一个简单高效的 JSON 查询器的方法介绍
2013/04/17 Javascript
Node.js中使用socket创建私聊和公聊聊天室
2015/11/19 Javascript
基于JavaScript实现Json数据根据某个字段进行排序
2015/11/24 Javascript
jQuery遮罩层实现方法实例详解(附遮罩层插件)
2015/12/08 Javascript
Jquery on方法绑定事件后执行多次的解决方法
2016/06/02 Javascript
JS实现针对给定时间的倒计时功能示例
2017/04/11 Javascript
利用jQuery实现简单的拖曳效果实例代码
2017/10/20 jQuery
详解从买域名到使用pm2部署node.js项目全过程
2018/03/07 Javascript
jQuery使用动画队列自定义动画操作示例
2018/06/16 jQuery
详解Java中String JSONObject JSONArray List转换
2020/11/13 Javascript
微信小程序实现倒计时功能
2020/11/19 Javascript
通过python下载FTP上的文件夹的实现代码
2013/02/10 Python
python3 发送任意文件邮件的实例
2018/01/23 Python
Python运维之获取系统CPU信息的实现方法
2018/06/11 Python
python reverse反转部分数组的实例
2018/12/13 Python
python3射线法判断点是否在多边形内
2019/06/28 Python
python 执行终端/控制台命令的例子
2019/07/12 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
2019/09/06 Python
python递归调用中的坑:打印有值, 返回却None
2020/03/16 Python
哪种Python框架适合你?简单介绍几种主流Python框架
2020/08/04 Python
python属于哪种语言
2020/08/16 Python
利用Bootstrap实现漂亮简洁的CSS3价格表实例源码
2017/03/02 HTML / CSS
html5 div布局与table布局详解
2016/11/16 HTML / CSS
音乐教学随笔感言
2014/02/19 职场文书
小学新学期寄语
2014/04/02 职场文书
个人综合鉴定材料
2014/05/23 职场文书
护士找工作求职信
2014/07/02 职场文书
2014年领班工作总结
2014/11/25 职场文书
小学中队活动总结
2015/05/11 职场文书
2019年个人工作总结范文(3篇)
2019/08/27 职场文书
解决jupyter notebook图片显示模糊和保存清晰图片的操作
2021/04/24 Python
Matplotlib绘制混淆矩阵的实现
2021/05/27 Python