一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第28天,点击查看活动详情。
一、需求
给了一些学生成绩单的数据,把它生成excel。 示例:
二、需求分析
在网上查了查,python的xlwt库可以自动生成excel文件。
xlwt库的地址:github.com/python-exce…xlwt库的语法介绍:xlwt.readthedocs.io/en/latest/a…
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')
ws的write函数的填充数据,参数分别是横坐标,纵坐标, 值, 样式
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