文件读写 - xlrd模块

一、xlrd、xlwt、xlutils区别

xlrd 可以在任意平台上读取的excel为: .xls以及 .xlsx 。

xlwt支持excel版本: Microsoft excel版本 95---2003,也就是 xls文件。

若在xlrd与xlwt之间进行交互,如拷贝 xlrd 到 xlwt 需要用到xlutils,xlutils提供 copy、display、filter、margins、Save、styles等函数。

二、xlrd使用

1.打开Excel文件

data = xlrd.open_workbook('excelFile.xls')

2.读取所有工作表

workbook = xlrd.open_workbook('excelFile.xls')

workbook.sheet_names()

3.获取一个工作表,共有3种方式: 

table = data.sheets()[0] #通过索引顺序获取 

table = data.sheet_by_index(0) #通过索引顺序获取 

table = data.sheet_by_name(u'Sheet1')#通过名称获取

4.获取整行和整列的值(数组) 

table.row_values(i) 

table.col_values(i)

5.获取行数和列数 

nrows = table.nrows 

ncols = table.ncols

6.循环行列表数据 

for i in range(nrows ): 

    print table.row_values(i)

7.读取单元格 

cell_A1 = table.cell(0,0).value 

cell_C4 = table.cell(2,3).value

8.判断单元格数据类型

ctype=table.cell(i,j).ctype

类型 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error 

9.使用行列索引

cell_A1 = table.row(0)[0].value 

cell_A2 = table.col(1)[0].value

10.简单的写入 

import xlrd

data = xlrd.open_workbook('excelFile.xls')

table = data.sheet_by_name(u'Sheet1')#通过名称获取

row = 0 

col = 0 

# 类型 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error 

ctype = 1 

value = '单元格的值' 

xf = 0 # 扩展的格式化 

table.put_cell(row, col, ctype, value, xf) 

table.cell(0,0)  #单元格的值' 

table.cell(0,0).value #单元格的值' 

11.获取sheet名字  

import xlrd                   

xlsfile = r'D:\AutoPlan\apisnew.xls'   

book = xlrd.open_workbook(xlsfile)

#获取sheet对象,方法有2种:  

sheet_name=book.sheet_names()[0]        

#获得指定索引的sheet名字  

print sheet_name  

sheet1=book.sheet_by_name(sheet_name)

#通过sheet索引获得sheet对象  

sheet0=book.sheet_by_index(0)     

三、读取excel单元格日期数据

1.使用xldate_as_datetime函数

将excel中的日期数据转换为yyyy/mm/dd格式

import xlrd

data = xlrd.open_workbook('E:/python/project/ab123.xlsx')

table = data.sheet_by_name(u'chinese')                       #通过名称获取表

nrows = table.nrows                                          #数据行数

ncols = table.ncols

for i in range(1,nrows ):                                    #跳过第1行表头

  data=list(table.row_values(i))

  for j in range(0,ncols):

    type=table.cell(i,j).ctype

    if type==3 :

      t1=xlrd.xldate.xldate_as_datetime(table.cell(i,j).value,0)

      data[j]=t1.strftime('%Y/%m/%d')

  print(data)

结果:

['小文', 88.0, '1990/02/22']

['小明', 86.0, '2016/07/09']

['小红', 99.0, 20160908.0]

3.使用xldate_as_tuple函数

将excel中的日期数据转换为yyyy/mm/dd格式

import xlrd

data = xlrd.open_workbook('E:/python/project/ab123.xlsx')

table = data.sheet_by_name(u'chinese')                       #通过名称获取表

nrows = table.nrows                                          #数据行数

ncols = table.ncols

for i in range(1,nrows ):                                    #跳过第1行表头

  data=list(table.row_values(i))

  for j in range(0,ncols):

    type=table.cell(i,j).ctype

    if type==3 :

      t1=xlrd.xldate.xldate_as_tuple(table.cell(i,j).value,0)

      data[j]=str(t1[0])+'/'+str(t1[1])+'/'+str(t1[2])

  print(data)

#结果:

['小文', 88.0, '1990/2/22']

['小明', 86.0, '2016/7/9']

['小红', 99.0, 20160908.0]

猜你喜欢

转载自blog.csdn.net/helunqu2017/article/details/112913780