动态生成学生成绩单

1,067 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第28天,点击查看活动详情

一、需求

给了一些学生成绩单的数据,把它生成excel。 示例:

image.png

二、需求分析

在网上查了查,pythonxlwt库可以自动生成excel文件。

xlwt库的基本语法

安装

pip install xlwt

引用xlwt

import xlwt
from datetime import datetime

设置表单的样式和定义时间

// 注意easyxf函数是来设置表单的样式
style0 = xlwt.easyxf('font: name Times New Roman, color-index red, bold on',
    num_format_str='#,##0.00')
style1 = xlwt.easyxf(num_format_str='D-MMM-YY')

声明对象 设置工作表名称

// 声明对象
wb = xlwt.Workbook()
// s设置工作表名称
ws = wb.add_sheet('A Test Sheet')

wswrite函数的填充数据,参数分别是横坐标,纵坐标, 值, 样式

ws.write(0, 0, 1234.56, style0)
ws.write(1, 0, datetime.now(), style1)
ws.write(2, 0, 1)
ws.write(2, 1, 1)
ws.write(2, 2, xlwt.Formula("A3+B3"))

最后异步,保存文件

// 保存文件
wb.save('example.xls')

这里有个注意点,你的python文件不能命名为xlwt.py,这个是会冲突报错的

三、代码实现

因为不需要时间参数,因此不需要引用datetime

  • 第一步 导入xlwt
import xlwt
  • 第二步 创建wb对象,设置表单名称, add_sheet有两个参数,分别是name和是否可多次写入cell_overwrite这个值默认是false
wb = xlwt.Workbook()
ws = wb.add_sheet('17班成绩', cell_overwrite_ok=True)
  • 第三步 处理数据,把科目罗列出来,还有学生列表,成绩列表
# 罗列数据类型
titleList = ['姓名', '语文成绩', '数学成绩','英语成绩','化学成绩','物理成绩','生物成绩', '体育成绩', '总成绩']
# 姓名列表
nameList = [ '张三', '李四', '王五' ]

# 成绩列表
list1 = [
  [ 90, 89, 87, 86, 85, 84, 83],
  [ 91, 87, 92, 81, 95, 80, 75],
  [ 90, 89, 87, 86, 85, 84, 81],
]
  • 第四步 开始写入数据 首先写入科目类型
# 写入title列表
titleIndex = 0
for title in titleList:
  ws.write(0,titleIndex,title)
  titleIndex += 1
nameIndex = 1

写入学生名单

# 写入学生名字list
for name in nameList:
  ws.write(nameIndex, 0, name)
  nameIndex += 1

写入成绩名单,写入成绩名单的时候注意要计算下总成绩

# 计算总成绩并写入成绩
for lis in list1:
  totalNum = 0
  for li in lis:
    totalNum += li
  lis.append(totalNum)
lisIndex = 1
for lis in list1:
  liIndex = 1
  for li in lis:
    ws.write(lisIndex, liIndex, li)
    liIndex += 1
  lisIndex += 1


  • 最后保存数据
# 保存文件
wb.save('17班eccel.xls')

四、执行代码展示结果

执行代码

python .\demoExcel.py

展示结果

image.png