上QQ阅读APP看书,第一时间看更新
019 将筛选结果添加到新建的工作表
此案例主要通过使用Worksheet的append()方法和Workbook的create_sheet()方法,从而实现在新建的工作表中批量添加筛选的数据。当运行此案例的Python代码(A302.py文件)之后,将在“成绩表.xlsx”文件中新建一个工作表(差等生表),并在差等生表中批量添加考试成绩总分小于350的学生,代码运行前后的效果分别如图019-1和图019-2所示。
图019-1
图019-2
A302.py文件的Python代码如下:
import openpyxl myBook=openpyxl.load_workbook('成绩表.xlsx') mySheet=myBook['成绩表'] #数据范围(myRange)从成绩表(mySheet)的第2行开始,到最后一行 myRange=mySheet[str(mySheet.min_row+1):str(mySheet.max_row)] #新建工作表(差等生表) myFilterSheet=myBook.create_sheet('差等生表') #在差等生表中添加表头 myFilterSheet.append([myCell.value for myCell in mySheet[str(mySheet.min_row):str(mySheet.min_row)]]+['总分']) for myRow in myRange: #获取每位学生的各科成绩 myList=[myCell.value for myCell in myRow] #计算每位学生的成绩总分 myScore=sum(myList[1:]) #如果总分小于350,则添加到差等生表 if myScore <350: myFilterSheet.append(myList+[myScore]) myBook.save('结果表-成绩表.xlsx')
在上面这段代码中,myList+[myScore]表示合并(拼接)两个列表,实际测试表明:如果myList+[myScore]写成myList+myScore,则将报错。因此虽然列表[myScore]只有一个成员,也必须写成列表形式[myScore],而不能写成myScore。
此案例的源文件是MyCode\A302\A302.py。