1 # coding=utf-8
2
3 import xlrd # 读模块4 import xlwt # 写模块5
6
7 def read_excel():8 """9 读取excel文件方法说明(此函数只是对xlrd用法的说明,看看就好。xlrd已经很好用了)10 :return:11 """12 # 打开excel文件13 data = xlrd.open_workbook('123.xls')14
15 # 获取文件内的表名16 print(data.sheet_names())17
18 # 获取指定表的两种方法19 sh = data.sheet_by_index(0) # 索引法20 sh = data.sheet_by_name(u'Sheet1') # 表名法21
22 # 获取表的行数23 print(sh.nrows)24 # 获取表的列数25 print(sh.ncols)26
27 # 获取第29行的数据(0算第一行)28 print(sh.row_values(28))29 # 获取第2列的数据(0算第一列)30 print(sh.col_values(1))31 # 获取第1行、第2列的数据(相当于坐标)32 print(sh.cell(0, 1).value)33
34
35 def write_excel(sheet_name, row0, datas, file_name):36 """37 自己重新封装的写入excel表模块。以后要将数据写入excel直接调用此函数就行。此函数简单干净,使用方便。38 :param sheet_name: excel文件内的表名。例:Sheet139 :param row0: 表内第一行的内容,为一个列表。例:[id, name, sex]40 :param datas: 实际要写入表内的数据,为一个列表,里面包含几个元素就写几行数据,其中每一个元素又为一个列表,里面对应这一行41 每列的值。例:[[1, '小龙女', 'girl'], [2, '杨过', 'boy'], [3, '周伯通', 'boy']]42 :param file_name: 最终生成的excel文件名。例:'test.xls'
43 :return:44 """45 # 创建一个写对象实例46 f =xlwt.Workbook()47
48 # 创建一个叫sheet_name的表名49 sheet1 = f.add_sheet(sheet_name, cell_overwrite_ok=True)50
51 # 创建表sheet_name的第一行(即标题)52 for i in range(0, len(row0)):53 sheet1.write(0, i, row0[i])54
55 # 从第二行开始写数据,datas有多少元素就写多少行56 for row in range(1, len(datas) + 1):57 # 遍历每行的每一列,row0有多少元素就遍历多少列58 for col inrange(len(row0)):59 # 有了上面row,col提供的行号和列号就可以精确匹配一个单元格了,下面就开始往单元格里写数据了60 # row:行号,col:列号,datas[row-1][col]:数据61 # 注:datas这个列表里一个元素为一行,由于是从第二行开始写的,所以想要取datas的第一个元素需row-1
62 # 注:datas这个列表里一个元素(列表)里的元素对应这行每列的值。63 # 例:[1, '小龙女', 'girl'],1对应第1列的值,'小龙女'对应第2列的值,'girl'对应第三列的值64 sheet1.write(row, col, datas[row-1][col])65
66 f.save(file_name)67 print('已生成excel文件!')68
69
70 if __name__ == '__main__':71 read_excel()72 write_excel(73 sheet_name='students',74 row0=['id', 'name', 'sex'],75 datas=[[1, '小龙女', 'girl'], [2, '杨过', 'boy'], [3, '周伯通', 'boy']],76 file_name='test.xls'
77 )