python(读取excel操作-xlrd模块)
一、安装xlrd模块
- 到python官网下载http://pypi.python.org/pypi/xlrd模块安装,前提是已经安装了python 环境。
 - 或者在cmd窗口 pip install xlrd
 
二、excel读取操作
1.常用的函数
- excel中最重要的方法就是book和sheet的操作
 
1)获取book中一个工作表
#coding=utf-8
import xlrd
data = xlrd.open_workbook("d:\\test.xls")   #打开excel文件
print (data.sheets()[0])       #通过索引顺序获取sheet对象
print (data.sheet_by_index(0))    #通过索引顺序获取sheet对象
print (data.sheet_by_name("Sheet1"))      #通过名称获取sheet对象
print (data.sheet_names())     #返回book中所有工作表的名字
#结果如下
-->    <xlrd.sheet.Sheet object at 0x0000000003D969B0>
-->    <xlrd.sheet.Sheet object at 0x0000000003D969B0>
-->    <xlrd.sheet.Sheet object at 0x0000000003D969B0>
-->    [u'Sheet1', u'Sheet2', u'Sheet3']
#coding=utf-8
import xlrd
book = xlrd.open_workbook("C:\\Users\\Administrator\\Desktop\\aaa.xls")
sheet = book.sheets()[0]
#通过for循环遍历取出excel表中第一列所有的数据
for i in range(sheet.nrows):
    print (sheet.row_values(i)[0])
2)行的操作
- nrows #获取该sheet中的有效行数
 - row(row_index) #返回由该行中所有的单元格对象组成的列表
 - row_slice(row_index, start_colx=0, end_colx=None) #默认返回由该行中所有的单元格对象组成的列表(结果只能返回end_colx前值)
 - row_values(row_index, start_colx=0, end_colx=None) #默认返回由该行中所有单元格的数据组成的列表(结果只能返回end_colx前值)
 - row_len(index) #返回该行的有效单元格长度
 
#coding=utf-8
import xlrd
data = xlrd.open_workbook("d:\\test.xls")
sheet = data.sheets()[0]
print (sheet.nrows)       #获取该sheet中的有效行数
print (sheet.row(0))      #返回由该行中所有的单元格对象组成的列表
print (sheet.row_slice(0))    #默认返回由该行中所有的单元格对象组成的列表
print (sheet.row_values(0,1))   #默认返回由该行中所有单元格的数据组成的列表
print (sheet.row_len(0))      #索引值为0的行中有效单元格有几个
#结果如下
-->    10
-->    [text:u'user1', text:u'pwd1']
-->    [text:u'user1', text:u'pwd1']
-->    [u'pwd1']
-->    2
3)列(colnum)的操作
- ncols #获取列表的有效列数
 - col(col_index, start_rowx=0, end_rowx=None) #默认返回由该列中所有的单元格对象组成的列表(结果只能返回end_rowx前值)
 - col_slice(col_index, start_rowx=0, end_rowx=None) #默认返回由该列中所有的单元格对象组成的列表(结果只能返回end_rowx前值)
 - col_values(col_index, start_rowx=0, end_rowx=None) #默认返回由该列中所有单元格的数据组成的列表(结果只能返回end_rowx前值)
 
#coding=utf-8
import xlrd
data = xlrd.open_workbook("d:\\test.xls")
sheet = data.sheets()[0]
print (sheet.ncols)       #获取列表的有效列数
print (sheet.col(0,0,2))      #返回第一行和第二行的单元格对象组成的列表
print (sheet.col_slice(0,0,2))    #返回第一行和第二行的单元格对象组成的列表
print (sheet.col_values(0,0,2))   #返回第一行和第二行的单元格数据组成的列表
#结果如下
-->    2
-->    [text:u'user1', text:u'user2']
-->    [text:u'user1', text:u'user2']
-->    [u'user1', u'user2']
4)单元格的操作
- cell(row_index,col_index) #返回单元格对象
 - cell_value(row_index,col_index) #返回单元格中的数据
 
#coding=utf-8
import xlrd
data = xlrd.open_workbook("d:\\test.xls")
sheet = data.sheets()[0]
print (sheet.cell(0,0))       #返回第一行第一列单元格对象
print (sheet.cell_value(0,0))     #返回第一行第一列单元格中的数据
#结果如下
-->    text:u'user1'
-->    user1
5)读取excel方法封装
#coding=utf-8
import xlrd
class ReadExcel():
    def __init__(self,file,sheet_i):
        self.book = xlrd.open_workbook(file)
        self.sheet = self.book.sheet_by_index(sheet_i)
    def getValue(self,row_i,col_i):
        """
        获取excel单元格数据
        """
        return self.sheet.cell_value(row_i,col_i)
    def getRows(self):
        """
        获取有效行数
        """
        return self.sheet.nrows
    def getCols(self):
        """
        获取有效列数
        """
        return self.sheet.ncols
2.单元格是表格中行与列的交叉部分,它是组成表格的最小单位,可拆分或者合并。单个数据的输入和修改都是在单元格中进行的如:
注意:注意作用域问题,之前获取的sheet之后,都在获取到这个sheet值后,在进行,行和列以及单元格的操作。
问题现象:
- 使用open()函数、xlrd.open_workbook()函数打开文件,文件名若包含中文,会报错找不到这个文件或目录。
 - 获取sheet时若包含中文,也会报错。
 
#打开文件 file = open(filename,'rb') #打开excel文件 workbook = xlrd.open_workbook(filename) #获取sheet sheet = workbook.sheet_by_name(sheetname)
解决方案:
- 对参数进行转码即可。如:
 
filename = filename.decode('utf-8')
- 也试过unicode函数,不过,在ride中运行时出现了报错,所以不赞成使用。
 
filename = unicode(filename,'utf-8')
python(读取excel操作-xlrd模块)的更多相关文章
- python(读取 excel 操作 xlrd 模块)
		
一.安装 xlrd 模块 到 python 官网下载 http://pypi.python.org/pypi/xlrd 模块安装,前提是已经安装了 python 环境. 或者在 cmd 窗口 pip ...
 - Python 读取Excel之xlrd篇
		
上一期给大家分享了如何用Python读取文本,这次给大家分享如何读取Excel表格内容,拿最常见的.xlsx和.xls格式来讲解. 本章主要知识点有: 读取整篇excel返回list[list[lis ...
 - Python学习笔记:读取Excel的xlrd模块
		
一.安装xlrd 可以使用命令行安装也可使用pycharm进行安装 表示xlrd库已经安装成功,安装成功后,我们就可以导入使用了. 二.xlrd说明 (1.单元格常用的数据类型包括 0:empty(空 ...
 - Python 读取Excel数据 xlrd
		
#导入相关模块 from xlrd import open_workbook #打开excel file = open_workbook("test.xlsx") #获取sheet ...
 - 利用xlrd模块实现Python读取Excel文档
		
# -*- coding: cp936 -*- #python读取excel import xlrd def main(): xls=xlrd.open_workbook("d:\\11.x ...
 - [转] Windows下使用Python读取Excel表格数据
		
http://www.python-excel.org/这个网站罗列了很多关于在Python下操作Excel文件的信息,这里选择了其介绍的第一个模块xlrd . xlrd 0.9.2版本跨平台同时支持 ...
 - Python对Excel操作详解
		
Python对Excel操作详解 文档摘要: 本文档主要介绍如何通过python对office excel进行读写操作,使用了xlrd.xlwt和xlutils模块.另外还演示了如何通过Tcl ...
 - Python读取Excel数据并根据列名取值
		
一直想将自己接触到的东西梳理一遍,可就是迈不出第一步,希望从这篇总结开始不要再做行动的矮人了. 最近测试过程中需要用到python读取excel用例数据,于是去了解和学习了下xlrd库,这里只记录使用 ...
 - python 读取excel数据并将测试结果填入Excel
		
python 读取excel数据并将测试结果填入Excel 读取一个Excel中的一条数据用例,请求接口,然后返回结果并反填到excel中.过程中会生成请求回来的文本,当然还会生成一个xml文件.具体 ...
 
随机推荐
- C++ int double float对应的长度以及二进制
			
#include <iostream> using namespace std; void showIntBit(int a); void showDoubleBit(double a1) ...
 - Django ORM 以连接池方式连接底层连接数据库方法
			
django原生支持是不支持 以连接池方式连接数据库的 概述 在使用 Django 进行 Web 开发时, 我们避免不了与数据库打交道. 当并发量低的时候, 不会有任何问题. 但一旦并发量达到一定数量 ...
 - Java之字符和字符串
			
字符类型 字符类型char是基本数据类型,它是character的缩写.一个char保存一个Unicode字符: char c1='A'; char c2='中'; 因为Java在内存中总是使用Uni ...
 - 1.4 Linux下对lvm逻辑卷分区大小的调整(针对xfs和ext4不同文件系统)
			
当我们在安装系统的时候,由于没有合理分配分区空间,在后续维护过程中,发现有些分区空间不够使用,而有的分区空间却有很多剩余空间.如果这些分区在装系统的时候使用了lvm(前提是这些分区要是lvm逻辑卷 ...
 - Linux用户查询、新增&删除
			
1.查询用户tail -1 /etc/passwd 2.新增用户&用户组groupadd testgroup #组的添加useradd testuser #创建用户testuserpasswd ...
 - SQlL Server   -----  通过年月进行查询
			
websit 中的代码. 不修改 对控件进行修改,展示年月 WdatePicker({ dateFmt: 'yyyy-MM', isShowToday: false, isShowClear: fa ...
 - 向DataGrid数据表格增加查询搜索框
			
向DataGrid数据表格增加查询搜索框 效果如下: js代码: $(function(){ var dg = $('#dg').datagrid({ url:"${pageContext. ...
 - 去除Chrome“请停用以开发者模式运行的扩展程序”提示
			
将version.dll放在chrome同级目录,重启浏览器( 79.0.3945.79版本后已失效)
 - SQL SERVER 查询所有表大小
			
DECLARE @T TABLE ( [name] VARCHAR(max), [rows] INT, reserved VARCHAR(max), data_size VARCHAR(max), i ...
 - scanf加不加\n?
			
近两天用vs2013敲代码碰到的问题 关于scanf小括号中加不加\n的区别 例程序如下所示: 第一个程序: int main(){ ; printf("你会去敲代码吗?(选择1 or 0) ...