【教学类-35-03】学号+姓名+班级(小3班)学号字帖(A4竖版2份 两张长方块)

本文介绍了使用Python编写脚本,自动从Excel中读取数据,生成A4竖版的学号和名字字帖,用于小3班幼儿熟悉学号。脚本包括读取学生名单、调整格式、批量插入学号姓名并保存为Word文档和PDF,便于教学和打印。
摘要由CSDN通过智能技术生成

 图片展示:

背景需求:

本周排到小3班,还没有来得及设计小班主题活动书的内容,于是就把小2班的学号字帖微调一下,做一份竖版2份的学号字帖。

让幼儿熟悉自己的学号,让我也熟悉幼儿的名字和学号

材料准备:

描字写(学号、名字)非常实用,所以我已经写了很多很多个WORD模板了。

为了区分,这一次又建了一个文件夹 20230928小3班学号描字帖

包含素材:

WORD模板样式

EXCEL名单样式

代码展示:

1.py位置

2.代码段

'''

作者:阿夏
时间:2023年9月28日
A4竖版两人,每人三行

'''

import xlwt
import xlrd
import os
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

# hs=int(input('一行2个,需要几行(1行,还有6行是表格)\n'))

print('----------第1步:新建一个临时文件夹------------')
# 新建一个”装N份word和PDF“的文件夹
os.mkdir(r'C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\零时Word')


wb= xlrd.open_workbook(r"C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\20230928小3班学号描字帖\学生名单.xlsx") #打开文件并返回一个工作蒲对象。open_workbook可以点进去看看函数里面的参数的含义之类的,很详细,英语不好的可以百度翻译,翻译出来的结果差不多。
sheet=wb.sheet_by_index(0)   #通过索引的方式获取到某一个sheet,现在是获取的第一个sheet页,也可以通过sheet的名称进行获取,sheet_by_name('sheet名称')
col1=sheet.col_values(0)# 学号
col3=sheet.col_values(1)# 班级

col2=sheet.col_values(2)# 名字
num=len(col1)-1  # 第一列去掉第一行
# for z in range(0,num):   #多少份  
# list=[]
# nb=[]
# nb2=[]
numberall=[]
# 生成 基本组:“学号+名字“
for num in range(1,len(col1)):
   
    name00=col2[num]     #吧学号和名字拼在一起, 张三
    numberall.append(name00)
    
    for x1 in range(3):
        number=int(col1[num])
        numberall.append(number)
    name01=col3[num]     #吧学号和名字拼在一起, 张三
    numberall.append(name01)
    # print(name00)
    for x2 in range(11):
        number=int(col1[num])     #吧学号和名字拼在一起, 张三
        numberall.append(number)
print(numberall)
# 一个数组【】

# 切开25人 一人16个数字
list1=[]
for fk in range(int(len(numberall)/16)):    # 一共16格子
    list1.append(numberall[fk*16:fk*16+16])
# print(list1)
# print(len(list1))

list=[]
for r in range(int(len(list1)/2)):
    list.append(list1[r*2:r*2+2])
print(list)
print(len(list))


# 25个数组【】

#单元格坐标
bg=[]
for x in range(4):
    for y in range(4):
        z2='{}{}'.format(x,y)
        bg.append(z2)

# ['00', '01', '02', '03', '04', '10', '11', '12', '13', '16', '20', '21', '22', '23', '24']

for n in range(int(num/2)):
    doc = docx.Document(r"C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\20230928小3班学号描字帖\小3班描字帖.docx")
    for b in range(2):
        table = doc.tables[b] 
        # print(p)
        for t in range(len(bg)):    # 0-16
            # print(list[t])
                        
            pp=int(bg[t][0])     # 提取表格bg里面每个元素的第0个数字==单元格X坐标  t=索引数字
            qq=int(bg[t][1]) 
            k=list[n][b][t]
            # f=font[t]   

            print(pp,qq,k)

            run=table.cell(pp,qq).paragraphs[0].add_run(str(k))    # 在单元格0,0(第1行第1列)输入第0个名字
            run.font.name = '楷体'  #输入时不字体
            run.font.size = Pt(65)  #输入字体大小80或68号
            run.bold=True
            run.font.color.rgb = RGBColor(200,200,200) #设置颜色10%黑色=深灰

            r = run._element
            r.rPr.rFonts.set(qn('w:eastAsia'), '楷体' )#将输入语句中的中文部分字体变为华文行楷
            table.cell(pp,qq).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中

    doc.save(r'C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\零时Word\{}.docx'.format('%02d'%n))#保存为XX学号的零时word  

    from docx2pdf import convert
    # docx 文件另存为PDF文件
    inputFile = r"C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\零时Word\{}.docx".format('%02d'%n)# 要转换的文件:已存在
    outputFile = r"C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\零时Word\{}.pdf".format('%02d'%n)  # 要生成的文件:不存在
    # 先创建 不存在的 文件
    f1 = open(outputFile,'w')
    f1.close()
    # 再转换往PDF中写入内容
    convert(inputFile, outputFile)

    from docx2pdf import convert


print('----------第4步:把都有PDF合并为一个打印用PDF------------')

import os
from PyPDF2 import PdfFileMerger
target_path =  'C:/Users/jg2yXRZ/OneDrive/桌面/描字帖/零时Word'
pdf_lst = [f for f in os.listdir(target_path) if f.endswith('.pdf')]
pdf_lst = [os.path.join(target_path, filename) for filename in pdf_lst]
pdf_lst.sort()
file_merger = PdfFileMerger()
for pdf in pdf_lst:
    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/桌面/描字帖/(打印合集)小3班描字帖练习册({}份).pdf".format(num))
file_merger.close()
# doc.Close()

# # print('----------第5步:删除临时文件夹------------')    
import shutil
shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/描字帖/零时Word') #递归删除文件夹,即:删除非空文件夹`

终端运行

不用输入参数,直接运行

成果位置

列表的结构=1个名字+3个学号+1个班级+11个学号


 

学具裁切

幼儿操作:

时间:2023年09月28日 下午14:30-14:45

班级:小3

人数:17人

总结分析:

1、幼儿第一次接触学号纸学具,要求就是"把灰色的线变成黑色的”

2、半数幼儿用正确书写手势,书写线条流畅。

3、半数幼儿反复求助:“我不会做”,老师捏着她们的手示范笔顺。几次后,幼儿还是表示“不会做”。于是我鼓励他们在纸张反面随意涂鸦。结果记号笔与纸张接触时间长了,纸张晕染,出现破洞。幼儿很扫兴,不愿意在画了。

4、“可以带回去吗?”“可以哦,给爸爸妈妈看看,教你们画画自己的学号”。听说可以带回去,孩子们都很开心。

感悟:

在描线要求下,小3班的孩子呈现3种状态。

1、经常描字的孩子书写线条流畅

2、部分孩子勉强把灰字描了一下(扭动线条)、

3、完全不知道怎么下笔的孩子(发呆、求助、涂鸦)

本次看到一位男孩直接描画了线框轮廓。把细线变成粗线。

END

                        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿夏reasonsummer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值