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 相关文章推荐
php使用递归与迭代实现快速排序示例
Jan 23 Python
python使用reportlab实现图片转换成pdf的方法
May 22 Python
Python实现将xml导入至excel
Nov 20 Python
python实现图片处理和特征提取详解
Nov 13 Python
Python并发编程协程(Coroutine)之Gevent详解
Dec 27 Python
python学生管理系统代码实现
Apr 05 Python
Python Dataframe 指定多列去重、求差集的方法
Jul 10 Python
用Python编写一个简单的CS架构后门的方法
Nov 20 Python
python中Lambda表达式详解
Nov 20 Python
Flask和pyecharts实现动态数据可视化
Feb 26 Python
ipython jupyter notebook中显示图像和数学公式实例
Apr 15 Python
使用python将HTML转换为PDF pdfkit包(wkhtmltopdf) 的使用方法
Apr 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
用cookies来跟踪识别用户
2006/10/09 PHP
提高php运行速度的一些小技巧分享
2012/07/03 PHP
PHP数组操作――获取数组最后一个值的方法
2015/04/14 PHP
PHP面向对象程序设计OOP继承用法入门示例
2016/12/27 PHP
js判断IE6/IE7/FF的代码[XMLHttpRequest]
2011/02/16 Javascript
js判断鼠标同时离开两个div的思路及代码
2013/05/31 Javascript
jQuery之按钮组件的深入解析
2013/06/19 Javascript
输入自动提示搜索提示功能的使用说明:sugggestion.txt
2013/09/02 Javascript
jquery ajax post提交数据乱码
2013/11/05 Javascript
js读写cookie实现一个底部广告浮层效果的两种方法
2013/12/29 Javascript
Jquery 点击按钮自动高亮实现原理及代码
2014/04/25 Javascript
javascript中 try catch用法
2015/08/16 Javascript
jQuery实现的自适应焦点图效果完整实例
2016/08/24 Javascript
浅谈Angular中ngModel的$render
2016/10/24 Javascript
Json按某个键的值进行排序
2016/12/22 Javascript
Bootstrap导航中表单简单实现代码
2017/03/06 Javascript
vue实现文字横向无缝走马灯组件效果的实例代码
2019/04/09 Javascript
jQuery实现计算器功能
2020/10/19 jQuery
[52:29]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第三局
2016/03/03 DOTA
numpy自动生成数组详解
2017/12/15 Python
python远程邮件控制电脑升级版
2019/05/23 Python
对tensorflow中tf.nn.conv1d和layers.conv1d的区别详解
2020/02/11 Python
python numpy--数组的组合和分割实例
2020/02/24 Python
关于Python解包知识点总结
2020/05/05 Python
浅析canvas元素的html尺寸和css尺寸对元素视觉的影响
2019/07/22 HTML / CSS
Bally美国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/18 全球购物
Tiqets英国:智能手机上的文化和娱乐门票
2019/07/10 全球购物
SQL Server 2000数据库的文件有哪些,分别进行描述
2013/03/30 面试题
卫校毕业生自我鉴定
2013/10/31 职场文书
传媒专业推荐信范文
2013/11/23 职场文书
工程造价专业大学生职业生涯规划书
2014/01/18 职场文书
2014年学校党建工作总结
2014/11/11 职场文书
毕业生党员个人总结
2015/02/14 职场文书
人为什么会“幸灾乐祸”?
2019/08/06 职场文书
vue3种table表格选项个数的控制方法
2022/04/14 Vue.js
js基于div丝滑实现贝塞尔曲线
2022/09/23 Javascript