python简单处理excel方法

 

python自带xlrd和xlwt模块用来处理excel,但总觉得xlwt模块用着别扭,于是按自己的习惯重新封装了一个

 

 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文件内的表名。例:Sheet1
39     :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 in range(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     )

 

posted @ 2019-05-30 17:47  白桦林_HK  阅读(1840)  评论(0编辑  收藏  举报