接上一篇,昨天除了把pdf转word,还得把几次成绩单拼起来,又去百度了openpyxl的用法,😂

由于我是一个菜鸟,如果成绩单里有人少了一次成绩,那个人的信息就错位了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import os
from openpyxl import Workbook #pip install openpyxl
from openpyxl import load_workbook

ex={}#字典

def readexcel(file):
wb=load_workbook(file)#读取excel
sheet=wb.get_sheet_by_name(wb.get_sheet_names()[0])#读第一个sheet表单
print("正在打开"+file+"的"+sheet.title)
ws=wb.active#激活
#找一找学号在第几列
for i in range(5):
nav=[]
for cell in list(sheet.rows)[i]:
nav.append(cell.value)
#print(nav)
if "学号" in nav:#!!!确保键值存在,且前后没有空格
break
try:
index=nav.index("学号")
except:
print("Not find key!")
return;
#读数据
for row in list(sheet.rows)[i:]:
rr=[]
for cell in row:
rr.append(cell.value)
if rr[index] in ex.keys():
ex[rr[index]].extend(rr)
else:
ex[rr[index]]=rr

def savefile(f):
path=os.getcwd()+'/'+f
if(os.path.exists(path)):
print("Error!File exists.Please delete it!")
return;
wb=Workbook()
ws = wb.active # 默认第一个sheet
for i in ex:
ws.append(ex[i])
wb.save(f)


def main():
contents=[]
#文件名,不要路径
files=['1.xlsx','2.xlsx','3.xlsx']
for f in files:
readexcel(f)
#print(ex)
endfile="总结.xlsx"
print("正在保存到:"+os.getcwd()+"/"+endfile)
savefile(endfile)

if __name__ =="__main__":
main()