6、Python 中 利用 openpyxl 读 写 excel 操作

 1 __author__ = 'Administrator'
 2 
 3 from openpyxl import load_workbook
 4 
 5 # Excel_Util 类
 6 class Excel_util:
 7 
 8 
 9     #初始化
10     def __init__(self,filePath,sheetName):
11 
12         self.filePath = filePath
13         self.sheetName = sheetName
14 
15 
16     #读取 excel 方法
17     def read_excel(self):
18 
19         #打开工作簿
20         wb = load_workbook(self.filePath)
21 
22         #获取sheet
23         sheet = wb[self.sheetName]
24 
25         #获取最大的行号
26         rowNo = sheet.max_row
27 
28         #获取最大的列号
29         colNo = sheet.max_column
30 
31         #获取第一行的数据作为key
32         key = []
33 
34         for i in range(1,colNo+1):
35 
36             #将第一行,第 i 列的值 追加到 列表 key中
37             key.append(sheet.cell(1,i).value)
38 
39         #格式化输出 key 的值
40         # print('key 的值为 {0}'.format(key))
41 
42         #获取 excel 中的除第一行以外的测试数据,将所有数据存放在 test_datas 列表中(即:将每一行的 字典 数据 追加到 列表中)
43         test_datas = []
44 
45         #从第2行开始读取数据
46         for i in range(2,rowNo+1):
47 
48             #从第一列开始读取数据
49             #将每一列的数据存放在 字典 dic_datas 中
50             dic_datas = {}
51 
52             for j in range(1,colNo+1):
53 
54                 # key 值中的索引从0 开始,即 dic_datas中的 key 对应 为 i 行 j 列 的值
55                 dic_datas[key[j-1]] = sheet.cell(i,j).value
56 
57             test_datas.append(dic_datas)
58 
59         #返回列表 test_datas
60         return test_datas
61 
62 
63     #excel 写回 ,写回的对应行号,写回的实际结果,写回的测试结果
64     def write_back(self,rowNo,actual_result,test_result):
65 
66         wb = load_workbook(self.filePath)
67         sheet = wb[self.sheetName]
68 
69         sheet.cell(rowNo,6).value = actual_result
70         sheet.cell(rowNo,7).value = test_result
71 
72         #写回之后,必须要保存
73         wb.save(self.filePath)
74 

写回excel优化:将固定列号修改为根据列的key进行写回(表头字段可以随意调整)

 

75 
76 if __name__ == '__main__':
77 
78     #实例化类的时候 传入初始化函数中对应的参数
79     excel_util = Excel_util('test_datas.xlsx','Sheet1')
80 
81     datas = excel_util.read_excel()
82 
83     print('读取excel数据后返回的列表值为 {0}'.format(datas))
84 
85     excel_util.write_back(6,'实际结果','测试结果')


返回测试数据为:

读取excel数据后返回的列表值为 [{'caseId': 1, 'mold': 'get', 'url': 'http://localh/xx', 'params': 'name=jack&age=20'}, {'caseId': 2, 'mold': 'get', 'url':'http://localh/xx', 'params': 'name=tom&age=21'}]

 

posted @ 2019-02-12 16:36  小小白的世界  阅读(236)  评论(0编辑  收藏  举报