码迷,mamicode.com
首页 > 编程语言 > 详细

python(读取excel操作-xlrd模块)

时间:2019-11-15 18:33:04      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:unicode   问题   open()   tab   对象   修改   class   tar   excel   

一、安装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>
-->    [uSheet1, uSheet2, uSheet3]

      

  2)行的操作

  • nrows    #获取该sheet中的有效行数 table.row(index)  #返回由该行中所有的单元格对象组成的列表
  • 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:uuser1, text:upwd1]
-->    [text:uuser1, text:upwd1]
-->    [upwd1]
-->    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:uuser1, text:uuser2]
-->    [text:uuser1, text:uuser2]
-->    [uuser1, uuser2]

      

  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:uuser1
-->    user1

  

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模块)

标签:unicode   问题   open()   tab   对象   修改   class   tar   excel   

原文地址:https://www.cnblogs.com/Mr-ZY/p/11868624.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!