需求:
正常教学需要,给孩子们打印九九乘法表,用Word或者Excel编辑好打印出来,但是很麻烦,能不能自动化的打印出来呢?这时Python处理Excel文件的模块openpyxl派上用场了。
用到的知识点:
Python的循环,列表操作,字符串格式化,wb对象基本操作,ws.cell()方法,ws.append()方法等,本节实例可以大部分复习基础篇的知识点哦,请认真操作,稍有不明白,请跳往基础篇目查看。
1、极简代码如下:
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws.title = '九九乘法表'
#循环遍历生成
for i in range(1,10):
for j in range(1,i 1):
ws.cell(i 1,j,'%dx%d=-' % (j,i,i*j))#核心代码,从第2行开始写,第一行留做标题
#保存文件
wb.save('九九乘法表.xlsx')
这里的核心代码,从第2行开始写,写的个数是由j决定的,执行代码及结果如下:
代码
2、普通代码如下:
#前面省略喽,加上标题,主要的是把第一行合并、插入数据,再设置对齐和字体等
#忘了,返回复习哦^_^
#插入标题、合并单元格
ws.merge_cells('A1:I1')
ws['A1'] = '九九乘法表Excel版——黑板客爱技术制作'
#设置字体、颜色、对齐方式
cell = ws['A1']
cell.font = Font(name='微软雅黑',size=18,bold=True,color=colors.RED)
cell.alignment = Alignment(horizontal='center',vertical='center')
效果如下:
3、pro版本代码如下:
from openpyxl import Workbook
from openpyxl.styles import Font,Alignment,PatternFill,colors
wb = Workbook()
ws = wb.create_sheet('九九表')
#插入标题、合并单元格
ws.merge_cells('A1:I1')
ws['A1'] = '九九乘法表Excel版——黑板客爱技术制作'
cell = ws['A1']
cell.font = Font(name='微软雅黑',size=18,bold=True,color=colors.RED)
cell.alignment = Alignment(horizontal='center',vertical='center')
#循环遍历方法1
for i in range(1,10):
for j in range(1,i 1):
ws.cell(i 1,j,'%dx%d=%d'%(j,i,j*i))#填充数据
ws.cell(i 1,j).fill = PatternFill(patternType='solid',fgColor=colors.BLUE)#填充背景
ws.cell(i 1,j).font = Font(name='宋体',size=15,color=colors.WHITE,bold=True)#填充字体
#保存文件
wb.save('九九乘法表pro.xlsx')
结果展示:(当然美化在Excel中就可以,Python是用来自动化的,这里主要是再次复习前面的基础知识)
4、pro_plus版本代码如下:
这里换一种方案和思路进行,我们可以利用ws.append()方法,参数是可遍历的对象,一行一行插入,第一行插入标题,第二行插入一个数据,第三行插入两个数据……直到最后一行。
由于篇幅关系,核心代码如下:
for x in range(1,10):
tmp = []
for y in range(1,x 1):
value = '%dx%d=%d'%(y,x,x*y)
tmp.append(value)
ws.append(tmp)
思路是:每一行建一个临时列表tmp,每一行的数据循环插入列表tmp,插入完毕后,再把列表append到表格的每行中。
,