【教学类-15-04】20221119《姓名描字帖-A4竖版(2*5名字+2*2表格自填)》(大班适合中层次幼儿)

 成品样式:

49号字(适应4个字的大小)

60号字(适应2个字、3个字的大小)

 

 背景需求:

大班有一些孩子在家练习过名字,但是不熟练无法默写,需要一些样板范例进行回忆和仿写。

所以设计一个带名字的范例,下面保留空位,让幼儿仿写。(最下面留4个格子,把名字写在里面)

word表格设置

 

 不用分栏

EXCLE设置:

 表格放在第一个

 

代码发布:

'''

作者:阿夏
时间:2022年11月19日
名称:大班学具描字帖A4全板面带练习表格 2*5个字 字号49(4字)或60(2、3字)+2*2的表格

'''

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个,需要几行(5行,还有2行是表格)\n'))

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


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  # 第一列去掉第一行
# for z in range(0,num):   #多少份  
list=[]
nb=[]
nb2=[]
# 生成 基本组:“学号+名字“
for num in range(1,len(col1)):
    doc = docx.Document(r"C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\学生名单A4.docx")
    name='{}{}'.format ('%02d'%int(col1[num]),col2[num])     #吧学号和名字拼在一起, 01张三  
    names=name+' '+name
    print(names)
    for nn in range(5):
        doc.add_paragraph(names)
    # 字体这一段一定要再写一次
        for paragraph in doc.paragraphs:
            for run in paragraph.runs:             
                # run.font.size = Pt(49)                # 4个名字的字号
                run.font.size = Pt(60)                # 2\3个名字的字号
                run.font.bold = False                    #数字题目字体是否加粗 不加粗,5*8再加粗比较满,压抑了
                run.font.name = 'Arial'           # 控制是英文时的字体
                run.element.rPr.rFonts.set(qn('w:eastAsia'), '微软雅黑')  # 控制数字是中文时的字体
                paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.LEFT # 设置数字页眉居中对齐
                # paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER # 设置数字页眉居中对齐
                run.font.color.rgb = RGBColor(200,200,200) #设置颜色浅灰
                # paragraph.paragraph_format.line_spacing=1.5 #数字中文字的段行距
                paragraph.paragraph_format.line_spacing = Pt(90) #数字段间距

    # 设置主要页边距 5
    from docx.shared import Cm # 导入cm模块
    doc.sections[0].top_margin = Cm(1)# sections[1]是第二节=第二页 上边距
    doc.sections[0].bottom_margin = Cm(1)# sections[1]是第二节=第二页 下边距
    doc.sections[0].left_margin = Cm(1) # sections[1]是第二节=第二页 左边距
    doc.sections[0].right_margin = Cm(1)# sections[1]是第二节=第二页 右边距
    # 设置其他页边距 
    doc.sections[0].gutter=Cm(0)# sections[1]是第二节=第二页 装订线 默认为0 左
    doc.sections[0].header_distance=Cm(0.8)# sections[1]是第二节=第二页 页眉边距
    doc.sections[0].footer_distance=Cm(1.3)# sections[1]是第二节=第二页 页脚边距
    # 装订线还有一个位置属性,暂时未发现如何设置,默认为左,如果需求设置成右,可以建个模板docx文档导入。

    # 设置纸张方向和大小  LANDSCAPE=横  PORTRAIT纵  默认信纸 纵
    from docx.shared import Cm # 导入CM # 
    from docx.enum.section import WD_ORIENTATION  # 导入纸张方向
    doc.sections[0].page_height = Cm(29.7)  # 设置A4纸的高度
    doc.sections[0].page_width = Cm(21)  # 设置A4纸的宽
    doc.sections[0].orientation = WD_ORIENTATION.LANDSCAPE # 设置纸张方向为横向 L 

    # 设置分栏 如果不要,就把数字该为为1
    from docx.oxml.ns import qn
    doc.sections[0]._sectPr.xpath('./w:cols')[0].set(qn('w:num'), '1') #把第二节页设置为2栏

    # 插入表格2*2
 
 
    #创建5行7列表格
    table = doc.add_table(rows=2, cols=2,style='Table Grid')
    # table.style = 'Light List Accent 1'

    ##设置行高
    for h in range(2):
        table.rows[h].height=Cm(4)
    # table.rows[1].height=Cm(1.06)
    # for i in range(4,rows):
    #      table.rows[i].height=Cm(0.8)
    
    ##设置列宽(不同列宽) 
    # col_width_dic = {0:0.3,1:1.7,2:1.1,3:1.4,4:0.5,5:1.5,6:0.6,7:1.5,8:0.7,9:0.7}
    # for col_num in range(0,10):    
    #     table.cell(3, col_num).width = Inches(col_width_dic[col_num])


    doc.save(r"C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\零时Word\{}.docx".format('%02d'%num))

    from docx2pdf import convert

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

# 多个PDF合并(CSDN博主「红色小小螃蟹」,https://blog.csdn.net/yangcunbiao/article/details/125248205)
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/桌面/描字帖/(打印合集)大班A整页描字帖2乘5加表格-23名字({}人).pdf".format(num))
file_merger.close()
# doc.Close()

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

重点说明:

 

学具展示:

 

感悟:

可以根据幼儿实际情况,减少名字的段落,增加表格的数量,多多仿写,加深记忆。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我了解了您的问题。为了使用Hutool实现Word导出竖版的文字和横版的表格,并将其导出到一个文件,您需要按照以下步骤进行操作: 1. 首先,您需要在您的项目引入Hutool的Word模块。您可以通过以下方式在您的Maven项目添加依赖: ```xml <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-poi-word</artifactId> <version>5.7.6</version> </dependency> ``` 2. 然后,您需要创建一个Word文档对象。您可以使用以下代码创建一个空的Word文档对象: ```java Word07Writer writer = new Word07Writer(); ``` 3. 接下来,您需要将竖版的文字和横版的表格添加到Word文档。您可以使用以下代码添加文字内容: ```java writer.addText("这是竖版的文字内容"); ``` 而要添加表格内容,您可以使用以下代码: ```java Table table = writer.addTable(3, 3); table.setCaption("这是一个表格"); table.getRow(0).getCell(0).setText("第一行第一列"); table.getRow(0).getCell(1).setText("第一行第二列"); table.getRow(0).getCell(2).setText("第一行第三列"); table.getRow(1).getCell(0).setText("第二行第一列"); table.getRow(1).getCell(1).setText("第二行第二列"); table.getRow(1).getCell(2).setText("第二行第三列"); table.getRow(2).getCell(0).setText("第三行第一列"); table.getRow(2).getCell(1).setText("第三行第二列"); table.getRow(2).getCell(2).setText("第三行第三列"); ``` 4. 最后,您需要将Word文档导出到磁盘上的文件。您可以使用以下代码将Word文档导出为.docx格式的文件: ```java writer.flush(FileUtil.getOutputStream("example.docx")); writer.close(); ``` 将上述代码整合在一起,您可以得到以下完整的示例代码: ```java import cn.hutool.core.io.FileUtil; import cn.hutool.poi.word.Table; import cn.hutool.poi.word.Word07Writer; public class WordExportExample { public static void main(String[] args) { Word07Writer writer = new Word07Writer(); writer.addText("这是竖版的文字内容"); Table table = writer.addTable(3, 3); table.setCaption("这是一个表格"); table.getRow(0).getCell(0).setText("第一行第一列"); table.getRow(0).getCell(1).setText("第一行第二列"); table.getRow(0).getCell(2).setText("第一行第三列"); table.getRow(1).getCell(0).setText("第二行第一列"); table.getRow(1).getCell(1).setText("第二行第二列"); table.getRow(1).getCell(2).setText("第二行第三列"); table.getRow(2).getCell(0).setText("第三行第一列"); table.getRow(2).getCell(1).setText("第三行第二列"); table.getRow(2).getCell(2).setText("第三行第三列"); writer.flush(FileUtil.getOutputStream("example.docx")); writer.close(); } } ``` 希望这个示例代码能够帮助您解决问题。如有任何疑问,请随时联系我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

阿夏reasonsummer

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

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

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

打赏作者

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

抵扣说明:

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

余额充值