成品样式:
48号字(适应2-3个名字的大小)
44号字(适应4个名字大小(2-3个名字也可以用,字会稍微小))
打印样式:
背景需求:
观摩中3班做“描花体字”的本子的情景后,我有三个感悟
1、幼儿对样式不同的名字有一定的描画兴趣,特别是华文彩云空心字
2、因为忙着给孩子们打订书机钉子,没有详细看到每位幼儿(20人)的操作行为。
所以我希望轮到大1班玩8个字体描字帖时,难度提升
1、缩小字体大小——因为90%的孩子都会写名字了
2、增加书写数量——8个字变成16个字
3、不要用订书机——幼儿自己直接能做成本子。
4、制作本子后每一页名字都在页面上面,所以一些名字需要倒置(所以不能单纯使用单元格输入)
word表格设置
横版 页边距:上下左右0.7CM
插入4*4,每个单元格高度宽度如下图
框线:3磅黑色实线、3磅黑色虚线、中间的一横位6磅黑色实线
每个格子里面的字体大小
插入-形状-文本框,把文本框放在中间两行的位置上(一行4个),文本框的边框和填充都改为“空”
把第二行的4个文本框里面的文字,都改成旋转180
所有形状框的字体号48,颜色浅灰、间距50
第二行第1个框用的字体是“黑体”
第二行第2个框用的字体是“宋体”
依次类推
以上是 “不同字体名字本子(大班)48.docx”的设置。
不同字体名字本子(大班)44.docx就是把字体大小,从48改成44(每个框点一下,全选文字,一个一个改字体大小)
EXCLE设置:
表格放在第一个
代码发布:
生成2-3个名字的最佳字体大小:48
生成4个名字最佳字体大小:44
一个代码生成两个PDf合并文件
'''
作者:阿夏
时间:2022年12月10日
名称:大班描字帖,8个不同字体的学号名字({{}}导入)不需要剪开,直接做成小本子)
'''
import xlwt
import xlrd
import random
from win32com.client import constants,gencache
from win32com.client.gencache import EnsureDispatch
from win32com.client import constants # 导入枚举常数模块
import os,time
import docx
from docx import Document
from docx.shared import Pt
from docx.shared import RGBColor
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import qn
from docxtpl import DocxTemplate
import pandas as pd
from docx2pdf import convert
from docx.shared import RGBColor
print('----------第1步:从EXCEL里面提取学号和名字------------')
wb= xlrd.open_workbook(r"C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\学生名单.xlsx") #打开文件并返回一个工作蒲对象。open_workbook可以点进去看看函数里面的参数的含义之类的,很详细,英语不好的可以百度翻译,翻译出来的结果差不多。
sheet=wb.sheet_by_index(0) #通过索引的方式获取到某一个sheet,现在是获取的第一个sheet页,也可以通过sheet的名称进行获取,sheet_by_name('sheet名称')
col1=sheet.col_values(0)# 学号
col2=sheet.col_values(1)# 名字
num=len(col1)-1 # 第一列去掉第一行
list=[]
# 生成 基本组:“学号+名字“
for i in range(1,len(col1)):
# for d in range(8):
name='{}\n{}'.format ('%02d'%int(col1[i]),col2[i]) #吧学号和名字拼在一起, 01张三
# name='{}'.format (col2[i]) #吧学号和名字拼在一起, 01张三
list.append(name) # 生成第一行信息['01张三 ],正好摆一行
print(list)# 32个名字
# ['01\n张 三', '06\n李四光', '13\n王者荣耀', '29\n赵匡胤']
print('----------第2步:把提取的名字写入Word文本框------------')
f=[48,44]# 48号字体适合2-3名字,44适合4个名字
m=[3,4]# 3=3个名字,4=4个名字
for s in range(len(f)):
# 新建一个”装N份word和PDF“的文件夹print('----------第1步:新建一个临时文件夹------------')
os.mkdir(r'C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\零时Word')
for i in range(num):
context = {
"z1": list[i],
"z2": list[i],
"z3": list[i],
"z4": list[i],
"z5": list[i],
"z6": list[i],
"z7": list[i],
"z8": list[i],
}
doc = DocxTemplate(r'C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\不同字体名字本子(大班){}.docx'.format(f[s]))
# doc = DocxTemplate(zpath+'不同字体名字本子(大班).docx')
doc.render(context)
# tpl.save(file_path+r"\{} .docx".format('%02d'%i))
doc.save(r'C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\零时Word\{}.docx'.format('%02d'%i))#保存为XX学号的零时word
from docx2pdf import convert
# docx 文件另存为PDF文件
inputFile = r"C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\零时Word\{}.docx".format('%02d'%i)# 要转换的文件:已存在
outputFile = r"C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\零时Word\{}.pdf".format('%02d'%i) # 要生成的文件:不存在
# 先创建 不存在的 文件
f1 = open(outputFile,'w')
f1.close()
# 再转换往PDF中写入内容
convert(inputFile, outputFile)
from docx2pdf import convert
print('----------第4步:把都有PDF合并为一个打印用PDF------------')
from PyPDF2 import PdfFileMerger
target_path = 'C:/Users/jg2yXRZ/OneDrive/桌面/描字帖/零时Word'
pdf_listt = [f for f in os.listdir(target_path) if f.endswith('.pdf')]
pdf_listt = [os.path.join(target_path, filename) for filename in pdf_listt]
pdf_listt.sort()
file_merger = PdfFileMerger()
for pdf in pdf_listt:
print(pdf)
file_merger.append(pdf)
# file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/描字帖/(打印合集)大班A整页描字帖2乘5加表格-4名字-({}人).pdf".format(num))
file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/描字帖/(打印合集)大1班8个不同字体字帖({}号字适合{}个名字共{}人).pdf".format(f[s],m[s],num))
file_merger.close()
# doc.Close()
# # print('----------第5步:删除临时文件夹------------')
import shutil
shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/描字帖/零时Word') #递归删除文件夹,即:删除非空文件夹`
重点说明:
重点:纯文本填入word形状文本框。
实际批量效果:
每个人都是一张A4纸,没有跨页、名字也没有换行。
学具展示及制作:
(1)a4打印+剪白色边缘
(2)折出压痕(8个格子)
(3)短边沿中线对折,中间剪一刀
(4)压一下,变成风扇状。
(5)贴边,描字、涂色装饰。
感悟:
{{}}只引用的文字写入,所以格式要在Word里面设置,这有点麻烦,特别是48字号和44字号,每个文本框都是单独选中,更改大小。制作两份Word模板,并不边里。
后续再研究
end
教学过程:
时间:2022年12月8日 15:00-15:30
班级:中3班
人数:22人