1 '''
2 使用xlrd模块写入Excel文件
3 '''
4 import xlrd
5 book=xlrd.open_workbook(r'/Users/c2apple/Desktop/纪录/测试报告/张涛文件盘/骆洪文模版/彩屏带杨升/ZD-QR-730114 彩屏软件测试报告 00版.xlsx')#打开Excel文件
6 sheet1=book.sheet_by_name('First') #打开worksheet
7 row0=sheet1.row(0) #获取第0行
8 print(row0[0])
9 print(row0[0].value) #查看单元格中的内容
10
11 #使用扩展库openpyxl读取Excel2007及更高版本的Excel文件
12 import openpyxl
13 from openpyxl import Workbook
14 fn=r'/Users/c2apple/Desktop/test.xlsx' #文件名
15 wb=Workbook() #创建工作簿
16 ws=wb.create_sheet(title='你好,世界') #单元格赋值
17 ws['A1']='这是第一个单元格' #单元格赋值
18 ws['B1']=3.1415926
19 wb.save(fn) #保存Excel文件
20 wb=openpyxl.load_workbook(fn) #打开已有的Excel文件
21 ws=wb.worksheets[1] #打开指定索引的工作表
22 print(ws['A1'].value) #读取并输出指定单元格的值
23 ws.append([1,2,3,4,5]) #添加一行数据
24 ws.merge_cells('F2:F3') #合并单元格
25 ws['F2']="=sum(A2:E2)" #写入公式
26 for r in range(10,15):
27 for c in range(3,8):
28 _=ws.cell(row=r,column=c,value=r*c) #写入单元格数据
29 wb.save(fn)
30
31 '''
32 假设某学校所有课程每学期允许多次考试,学生可随时参加考试,系统自动将每次成绩
33 添加到Excel文件(包含3列,姓名、课程、成绩)中,现期末要求统计所有学生每门课程的最高成绩。
34 下面代码首先模拟生成随机成绩数据,然后进行统计分析.
35 '''
36 import openpyxl
37 from openpyxl import Workbook
38 import random
39
40 #随机生成数据
41 def generatetRandomInformation(filename):
42 workbook=Workbook()
43 worksheett=workbook.worksheets[0]
44 worksheett.append(['姓名','课程','成绩'])
45 #中文名字中的第一、第二、第三个字
46 first=tuple('赵钱孙李')
47 middle=tuple('伟昀琛东')
48 last=tuple('坤艳志')
49 #课程名称
50 subject=('语文','数学','英语')
51 #随机生成200个数据
52 for i in range(200):
53 line=[]
54 r=random.randint(1,100)
55 name=random.choice(first)
56 #按一定概率生成只有两个字的中文名字
57 if i>50:
58 name=name+random.choice(middle)
59 name=name+random.choice(last)
60 #依次生成姓名、课程名、和成绩
61 line.append(name)
62 line.append(random.choice(subject))
63 line.append(random.randint(0,100))
64 worksheett.append(line)
65 #保存数九,生成Excel 2007格式的文件
66 workbook.save(filename)
67
68 def getResult(oldfile, newfile):
69 #用于存放结果数据的字典
70 result = dict()
71
72 #打开原始数据
73 workbook = openpyxl.load_workbook(oldfile)
74 worksheet = workbook.worksheets[0]
75
76 #遍历原始数据
77 for row in worksheet.rows:
78 if row[0].value == '姓名':
79 continue
80 #姓名,课程名称,本次成绩
81 name, subject, grade = row[0].value, row[1].value, row[2].value
82
83 #获取当前姓名对应的课程名称和成绩信息
84 #如果result字典中不包含,则返回空字典
85 t = result.get(name, {})
86 #获取当前学生当前课程的成绩,若不存在,返回0
87 f = t.get(subject, 0)
88 #只保留该学生该课程的最高成绩
89 if grade > f:
90 t[subject] = grade
91 result[name] = t
92
93 workbook1 = Workbook()
94 worksheet1 = workbook1.worksheets[0]
95 worksheet1.append(['姓名','课程','成绩'])
96
97 #将result字典中的结果数据写入Excel文件
98 for name, t in result.items():
99 print(name,t)
100 for subject, grade in t.items():
101 worksheet1.append([name, subject, grade])
102
103 workbook1.save(newfile)
104
105 if __name__=='__main__':
106 oldfile=r'test1.xlsx'
107 newfile=r'resultt.xlsx'
108 generatetRandomInformation(oldfile)
109 getResult(oldfile,newfile)