Python辅助Word+Excel:让办公更高效
上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。