上文提供了Excel文件读写操作的基本模板,本文进一步详解这两个模块的功能。
一、Book(class)
由xlrd.open_work(“example.xls”)返回
二、Sheet(class)
由Book object相关方法返回
三、Cell(class)
由Sheet object(s)相关方法返回
ctype: 一个int型变量,对应不同的数值类型
value: 单元格的值
四、xlrd模块使用详解
1、导入模块
In [1]: import xlrd
2、打开Excel文件读取数据
In [2]: data = xlrd.open_workbook('sample.xls')
In [3]: data
Out[3]: Book at 0x21df9f4a198>
3、使用技巧
# 获取一个工作表,index_number表示表的索引号,索引号从0开始,表示第一张表,1表示第二张表,依次类似。
# table = data.sheets()[index_number]
# 1、通过索引顺序获取
In [4]: tables = data.sheets()
In [5]: tables
Out[5]: [0x21df9f5bcc0>]
In [6]: tables[0]
Out[6]: 0x21df9f5bcc0>
#若果有两个表格的情况,sheets会得到两个表的地址
In [7]: data2 = xlrd.open_workbook('sample2.xls')
In [9]: data2.sheets()
Out[9]: [0x21df9f62fd0>, 0x21df9f62f98>]
#table = data.sheet_by_index(index_number)
#2、通过索引顺序获取,index_number表示表的索引号,索引号从0开始,表示第一张表,1表示第二张表,依次类似。
In [10]: data2.sheet_by_index(0)
Out[10]: 0x21df9f62fd0>
3、table = data.sheet_by_name(sheet_name)
#通过名称获取,sheet_name表示工作表的名字,但是需要注意的是这个表明的字符串需要使用Unicode的字符串,如:u'xxx'
In [11]: data2.sheet_by_name('sample')
Out[11]: 0x21df9f62fd0>
获取整行和整列的值(数组)
#获取行的值
#table.row_values(row_index)
In [12]: table = data2.sheet_by_name('sample')
In [13]: table.row_values(0)
Out[13]: ['netcon', 'conw.net']
#获取列的值
#table.col_values(i)
In [14]: table.col_values(0)
Out[14]: ['netcon']
获取行数和列数
#获取行数
#nrows = table.nrows
In [16]: table.nrows
Out[16]: 1
#获取列数
#ncols = table.ncols
In [17]: table.ncols
Out[17]: 2
循环行列表数据
In [18]: for i in range(table.nrows):
...: print(table.row_values(i))
...:
['netcon', 'conw.net']
单元格
#根据行列的位置去单元格的数据
In [19]: cell_a1 = table.cell(0,0)
In [20]: cell_a1
Out[20]: text:'netcon'
In [21]: cell_a1.dump
Out[21]: method BaseObject.dump of text:'netcon'>
#取出单元格的数值
In [22]: cell_a1.value
Out[22]: 'netcon'
使用行列索引
#通过行进行数据的获取
In [23]: cell_A1 = table.row(0)
In [24]: cell_A1
Out[24]: [text:'netcon', text:'conw.net']
In [25]: cell_A1[0]
Out[25]: text:'netcon'
In [27]: cell_A1[0].value
Out[27]: 'netcon'
#通过列进行数据的获取
In [28]: cell_A1 = table.col(0)[0].value
In [29]: cell_A1
Out[29]: 'netcon'
简单的写入
row = 0
col = 0
# 类型 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
ctype = 1
value = '单元格的值'
xf = 0 # 扩展的格式化
#将‘单元格的’写入到Excel中,使用put_cell写入
In [31]: table.put_cell(1,1,1,'单元格的',0)
In [32]: table.cell(1,1).value
Out[32]: '单元格的'