用中文python進行Excel自動化進行成績統計
中文代碼簡單易懂,首頁有同名視訊進行詳細講解
原檔案:包括全年級的各科成績表,和一個成績統計的架構
python操作後的新檔案:從全年級分出的各班的成績表,平均分表、及格率表、優秀率表,表中包含條形圖的圖表
from zwpy import *
import zwpy.os_zw as win
from zwpy.math_zw import 四舍五入
from zwpy.openpyxl_zw import 電子表格,列名轉字母,條形圖類
檔案1=電子表格('新成績表.xlsx')
表1=檔案1[0]
表2=檔案1[1]
表及格率=檔案1.複制工作表(表2.标題)
表及格率.标題='及格率'
表優秀率=檔案1.複制工作表(表2.标題)
表優秀率.标題='優秀率'
表2.标題='平均分'
滿分=清單(150,150,150,50,50,50,50,650)
# 下面用總成績表計算全部學生的平均分/優秀率/及格率
for 列 in 範圍(3,11):
分數清單=表1[列名轉字母(列)].所有值[1:]
平均分=(求和(分數清單))/長度(分數清單)
表2.單元格(2,列-1,四舍五入(平均分,2))
及格分 = 滿分[列 - 3] * 0.6
及格清單 = 清單(分數 for 分數 in 分數清單 if 分數 >= 及格分)
及格人數 = 長度(及格清單)
及格率 = 及格人數 / 長度(分數清單)
表及格率.單元格(2, 列 - 1, 及格率)
表及格率.單元格(2, 列 - 1).數字格式 = '0.00%'
優秀分 = 滿分[列 - 3] * 0.8
優秀清單 = 清單(分數 for 分數 in 分數清單 if 分數 >= 優秀分)
優秀人數 = 長度(優秀清單)
優秀率 = 優秀人數 / 長度(分數清單)
表優秀率.單元格(2, 列 - 1, 優秀率)
表優秀率.單元格(2, 列 - 1).數字格式 = '0.00%'
# 下面建立7個班的工作表并從總成績表分出對應班的學生
表頭=表1[1].所有值
for i in 範圍(1,8):
表=檔案1.添加工作表(f'{i}班')
表.添加行(表頭)
for 行 in 範圍(2,表1.最大行+1):
班名=表1.單元格(行,2).值
檔案1[班名].添加行(表1[行].所有值)
# 依次對每個班計算平均分/優秀率/及格率
for i in 範圍(1,8):
表=檔案1[f'{i}班']
for 列 in 範圍(3, 11):
分數清單 = 表[列名轉字母(列)].所有值[1:]
平均分 = (求和(分數清單)) / 長度(分數清單)
表2.單元格(2+i, 列 - 1, 舍入(平均分, 2))
及格分 = 滿分[列 - 3] * 0.6
及格清單 = 清單(分數 for 分數 in 分數清單 if 分數 >= 及格分)
及格人數 = 長度(及格清單)
及格率 = 及格人數 / 長度(分數清單)
表及格率.單元格(2 + i, 列 - 1, 及格率)
表及格率.單元格(2 + i, 列 - 1).數字格式 = '0.00%'
優秀分 = 滿分[列 - 3] * 0.8
優秀清單 = 清單(分數 for 分數 in 分數清單 if 分數 >= 優秀分)
優秀人數 = 長度(優秀清單)
優秀率 = 優秀人數 / 長度(分數清單)
表優秀率.單元格(2 + i, 列 - 1, 優秀率)
表優秀率.單元格(2 + i, 列 - 1).數字格式 = '0.00%'
# 給平均分/優秀率/及格率三個工作表添加條形圖
for 列 in 範圍(2,10):
科目=表2.單元格(1,列).值
條形圖=條形圖類('垂直',科目)
條形圖.添加資料(表2,2,9,列)
條形圖.設定系列(表2,2,9,1)
行位置=(列-1)+15*(列-2)
表2.添加圖表(條形圖,f'K{行位置}')
for 列 in 範圍(2,10):
科目=表及格率.單元格(1,列).值
條形圖=條形圖類('水準',科目)
條形圖.添加資料(表及格率,2,9,列)
條形圖.設定系列(表及格率,2,9,1)
行位置=(列-1)+15*(列-2)
表及格率.添加圖表(條形圖,f'K{行位置}')
for 列 in 範圍(2,10):
科目=表優秀率.單元格(1,列).值
條形圖=條形圖類('垂直',科目)
條形圖.添加資料(表優秀率,2,9,列)
條形圖.設定系列(表優秀率,2,9,1)
行位置=(列-1)+15*(列-2)
表優秀率.添加圖表(條形圖,f'K{行位置}')
檔案1.儲存('新成績表2.xlsx')
win.打開檔案('新成績表2.xlsx')