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实现的登录和操作开心网脚本分享
Jul 09 Python
举例讲解Django中数据模型访问外键值的方法
Jul 21 Python
python 编码规范整理
May 05 Python
python爱心表白 每天都是浪漫七夕!
Aug 18 Python
Python3爬虫学习之爬虫利器Beautiful Soup用法分析
Dec 12 Python
Python笔记之代理模式
Nov 20 Python
PyCharm 无法 import pandas 程序卡住的解决方式
Mar 09 Python
Django serializer优化类视图的实现示例
Jul 16 Python
Python读取yaml文件的详细教程
Jul 21 Python
对Python 字典元素进行删除的方法
Jul 31 Python
python实现人性化显示金额数字实例详解
Sep 25 Python
python 实现性别识别
Nov 21 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微信刮刮卡 附微信接口
2016/07/22 PHP
PHP与jquery实时显示网站在线人数实例详解
2016/12/02 PHP
PHP设计模式之建造者模式定义与用法简单示例
2018/08/13 PHP
jQuery 加上最后自己的验证
2009/11/04 Javascript
javascript 通用简单的table选项卡实现
2010/05/07 Javascript
使用js解决由border属性引起的div宽度问题
2013/11/26 Javascript
JavaScript中输出标签的方法
2014/08/27 Javascript
js实现横向百叶窗效果网页切换动画效果的方法
2015/03/02 Javascript
JS实现简单的键盘打字的效果
2015/04/24 Javascript
Javascript实现的Map集合工具类完整实例
2015/07/31 Javascript
利用n 升级工具升级Node.js版本及在mac环境下的坑
2017/02/15 Javascript
基于JavaScript实现类名的添加与移除
2017/04/23 Javascript
JS 设置Cookie 有效期 检测cookie
2017/06/15 Javascript
详解如何让Express支持async/await
2017/10/09 Javascript
搭建vue开发环境
2018/07/19 Javascript
详解Vue This$Store总结
2018/12/17 Javascript
VUE安装使用教程详解
2019/06/03 Javascript
JS数据类型(基本数据类型、引用数据类型)及堆和栈的区别分析
2020/03/04 Javascript
部署vue+Springboot前后端分离项目的步骤实现
2020/05/31 Javascript
Python中遇到的小问题及解决方法汇总
2017/01/11 Python
python实现unicode转中文及转换默认编码的方法
2017/04/29 Python
python学习教程之Numpy和Pandas的使用
2017/09/11 Python
python3 破解 geetest(极验)的滑块验证码功能
2018/02/24 Python
python 编码规范整理
2018/05/05 Python
Python3爬虫之urllib携带cookie爬取网页的方法
2018/12/28 Python
Django中提供的6种缓存方式详解
2019/08/05 Python
Python 字典中的所有方法及用法
2020/06/10 Python
Python Selenium实现无可视化界面过程解析
2020/08/25 Python
玩转CSS3色彩
2010/01/16 HTML / CSS
SmartBuyGlasses美国官网:太阳眼镜和眼镜
2017/08/20 全球购物
信息管理专业学生自荐信格式
2013/09/22 职场文书
医务人员竞聘职务自我评价分享
2013/11/08 职场文书
电子商务专业求职信
2014/07/10 职场文书
英语系毕业生求职信
2014/07/13 职场文书
Node实现搜索框进行模糊查询
2021/06/28 Javascript
js 实现Material UI点击涟漪效果示例
2022/09/23 Javascript