【办公类-19-02】Python批量制作word文本框的名字小标签,用A4word打印(植物角、家长会、值日生)

news/2024/4/19 12:19:58/文章来源:https://blog.csdn.net/reasonsummer/article/details/129269200

背景需求: 

 

2月28日去小班带班,看到班主任制作了一些小手印花束作为家长会的家长座位提示,上面贴着“”圆形白色的幼儿名字贴”。

我立刻想起了制作的过程——在word中插入文本框,然后复制无数个文本框,摆好位置,再把所有孩子的名字一个个黏贴进去。

(文本框的作用:主要是确定剪切的方位,圆形、方形外框比较常用)

(文本框名字贴常见用途:植物角植物的提供者、园所大厅里展示作业的作者、值日生挂牌……)

 植物里牌子(以前花盆里都插着塑封着孩子名字的吸管,现在都要求孩子自己的制作痕迹,打印的名字相对少了)

 

麻烦的地方:

1、为了圆形文本框一样大小,可以点击一个圆形,反复黏贴(像右下角反复念贴))

因而要手动把每个元素拖动成X*Y矩阵结构。

 矩阵 结构

 2、名字需要一个个黏贴进去,默认格式

 如果人数不多,手动操作也没有什么难度。但是如果遇到一下问题:

1、标签包含人数多,容易贴错——需要黏贴摆放100个圆形,黏贴100次名字。很容易疲劳,黏错名字。

2、文本框图形发生变化——如果标签外形不是圆形、而是梯形,就需要点一个圆形,修改转换一次。然后反复执行(无法批量全选改变)

 3、文本框图形大小变化——本次演示的是3CM直径的圆形。如果标签长款变大或缩小。也需要一个一个文本框的修改尺寸,调整里面名字的大小,(无法批量全选改变),同时还需要调整图形与图形之间的间距。 然后反复执行。

 需求思考:

在word里手动制作“文本框”的批量名字标签,图形及名字的黏贴属于完全的机械重复操作。我想是否可以利用Python+word+excel制作一个可以被批量制作的、可随时调整单一图形模板的代码。

设计过程:

在一个文件夹里的三个文件名称(py\xlsx\docx)

一、word模板(3CM文本框圆形)

新建一个Word模板,在里面插入一个圆形标签,中间输入{{name}},把线条颜色、字体设置成需要的颜色,单一的一个模板就做好了。

 一定要打几个回车空行,否则,批量出来的图案会黏在一起

 以下是没有加回车的结果,所有文本框黏在一起

 

二、EXCEL模板:

学号和名字(大部分情况便签上只打印幼儿名字,如果需要名字+学号,就做组合)。

 三、代码

# 一、导入相关模块,设定excel所在文件夹和生成word保存的文件夹
from docxtpl import DocxTemplate
import pandas as pd
import os
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 qnzpath=r'D:\\test\\02办公类\\09 姓名小标签'+'\\'file_path=zpath+r'\临时'# 二、遍历excel,逐个生成word(小标签.docx是前面的模板)
try:os.mkdir(file_path)
except:passtpl = DocxTemplate(zpath+'bq.docx')
list = pd.read_excel(zpath+'list.xlsx')
name = list["name"]
number =list['number'] # str.rstrip()用于去掉换行符# 遍历excel行,逐个生成
num = list.shape[0]
for i in range(num):context = {"name": name[i],"number": number[i],#    "eng": eng[i]}tpl = DocxTemplate(zpath+'bq.docx')tpl.render(context)tpl.save(file_path+r"\学号{}.docx".format(i+1))# 合并所有Word
import win32com.client as win32
import os
word = win32.gencache.EnsureDispatch('Word.Application')
#启动word对象应用
word.Visible = False
path = r'D:\test\02办公类\09 姓名小标签\临时'
files = []
for filename in os.listdir(path):filename = os.path.join(path,filename)files.append(filename)
#新建合并后的文档
output = word.Documents.Add()
for file in files:output.Application.Selection.InsertFile(file)#拼接文档#获取合并后文档的内容doc = output.Range(output.Content.Start, output.Content.End)
output.SaveAs(r'D:\test\02办公类\09 姓名小标签\合并打印(需手动整理).docx') #保存output.Close()# # print('----------第5步:删除临时文件夹------------')    
import shutil
shutil.rmtree('D:\test\02办公类\09 姓名小标签\临时') #递归删除文件夹,即:删除非空文件夹

四、运行结果

 

成功合并了所有名字!!!

但docx格式需要调整——页边距上下左右0.7CM,分栏3-分栏5(测试)(此处后续再研究,如何把已有内容的word,用代码批量设置页边距和分栏)

 

其他展示效果

(举一反三,制作word文本框模板,可以大幅减少机械重复黏贴)

案例1:6CM文本框圆形-名字标签

 合并word的基本样式

 设置页边距和分栏后的效果

 调整回车符号(删除或增加回车)

 

案例2:4CM*2CM文本框长方形-名字标签

 

合并文档最开始的样式(名字都是虚拟的,加黑框无忌讳)

 

打印前效果。

 案例3:8*8CM爱心形状文本框-名字标签制作

合并文档初始效果

 调整页边距上下左右0.7、分栏2

 手动调试后的效果。

适合的名字数量2个名字、3个名字(4个名字就只显示3个名字,如果需要四个名字,手动把生成的四个名字的字号改小)

感悟: 

Python让我从机械重复的办公活动中寻找提高工作效率的新思路!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_75556.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MyBatis学习笔记(八) —— 字段名和属性不一致的情况下,如何处理映射关系

EmpMapper.java /** * 根据id查询员工信息 * param empId * return */ Emp getEmpByEmpId(Param("empId") Integer empId);EmpMapper.xml <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//D…

day22_IO

今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记沐沐霸的博客_CSDN博客-Java2301 零、 复习昨日 一、作业 二、缓冲流 三、字符流 四、缓冲字符流 五、匿名内部类 零、 复习昨日 File: 通过路径代表一个文件或目录 方法: 创建型,查找类,判断类,其他 IO …

如何创建出实用的员工手册?

员工手册主要是企业内部的人事制度管理规范&#xff0c;包含企业规章制度和企业文化&#xff0c;同时还起到了展示企业形象、传播企业文化的作用。它既覆盖了企业人力资源管理的各个方面规章制度的主要内容&#xff0c;又因适应企业独特个性的经营发展需要而弥补了规章制度制定…

VIF_Benchmark: All infrare and visible image fusion method in one framework

VIF_Benchmark Github 地址: https://github.com/Linfeng-Tang/VIF_Benchmark 完整Project下载地址&#xff1a;https://download.csdn.net/download/fovever_/87514164 我们把所有主流的基于深度学习的红外和可见光图像融合方法都集成在了这个框架中。 这些方法包括&#xff1…

数据结构六大排序

1.插入排序 1.插入排序 思路&#xff1a; 从第一个元素开始认为是有序的&#xff0c;去一个元素tem从有序序列从后往前扫描&#xff0c;如果该元素大于tem&#xff0c;将该元素一刀下一位&#xff0c;循环步骤3知道找到有序序列中小于等于的元素将tem插入到该元素后&#xff0…

如何防止DNS污染?

对于DNS污染&#xff0c;一般除了使用代理服务器和VPN之类的软件之外&#xff0c;并没有什么其它办法。但是利用我们对DNS污染的了解&#xff0c;还是可以做到不用代理服务器和VPN之类的软件就能解决DNS污染的问题&#xff0c;从而在不使用代理服务器或VPN的情况下访问原本访问…

设计模式系列 - 代理模式及动态代理详解

定义 为其他对象提供一种代理以控制对这个对象的访问。在某些情况下&#xff0c;一个对象不适合或者不能直接引用另一个对象&#xff0c;而代理对象可以在客户端和目标对象之间起到中介的作用。 结构 抽象角色&#xff1a;通过接口或抽象类声明真实角色实现的业务方法。 代…

C++ STL:容器 Container

文章目录1、序列容器1.1、容器共性1.2、vectorvector 结构* vector 扩容原理* vector 迭代器失效1.3、dequedeque 结构deque 迭代器deque 模拟连续空间1.4、listlist 特殊操作list 结构list 迭代器2、关联式容器2.1、容器共性2.2、容器特性3、无序关联式容器3.1、容器共性3.2、…

电子科技大学 高级计算机系统结构 考试回忆

首先题量不算小&#xff0c;因此没有太多时间把题都记出来&#xff0c;但是叙述一下题的类型希望能帮到以后选了这门课大家&#xff0c;在网上确实没有搜到这门课有关考试的任何资料&#xff0c;所以我也没啥参考全凭记忆和老师的PPT结合。复习的时候老师给了大纲&#xff0c;就…

【k8s】Kubernetes的学习(1.k8s概念和架构)

目录 1.首先要知道&#xff0c;Kubernetes为什么简称为k8s? 2.Kubernetes概述 2.1 kubernetes基本介绍 2.2 kubernetes的特性 2.3 kubernetes集群架构组件 2.3.1 Master (主控节点) 2.3.2 node (工作节点) 2.4 k8s核心概念 2.4.1 Pod 2.4.2 controller 2.4.3 Se…

Python自动发周报给老板,到点赶紧跑

嗨害大家好鸭&#xff01;我是小熊猫~ 作为一个社畜人 …勤勤恳恳的打工人&#xff01;&#xff01;&#xff01; 几乎每周都要写周报 没办法只能用点小技术 用python写个小工具 让它来给老板发周报哈哈哈 更多python摸鱼小技巧、基础知识:点击此处跳转文末名片获取 目标细…

收下这份十万商家称赞的开店攻略,带你发家致富!

理想与现实之间的距离&#xff0c;大概就是开店吧&#xff01;总觉得自己投点钱&#xff0c;一两年回本&#xff0c;后面每月轻松赚几万、几十万&#xff1b;结果却发现房租太贵、人工太贵、自己什么都不懂&#xff0c;然后随波逐流的没有特色。其实&#xff0c;细心的朋友会发…

【VUE】二 vue指令

目录 一、插值表达式 二、v-bind指令(对标签中的属性进行操作) 三、v-model指令&#xff08;input、select、textarea等。【双向绑定】&#xff09; 四、v-for循环指令 五、v-on(事件指令) 六、v-if条件判断 七、v-show&#xff08;条件显示或隐藏&#xff09; 八、案例…

王道计算机网络课代表 - 考研计算机 第五章 传输层 究极精华总结笔记

本篇博客是考研期间学习王道课程 传送门 的笔记&#xff0c;以及一整年里对 计算机网络 知识点的理解的总结。希望对新一届的计算机考研人提供帮助&#xff01;&#xff01;&#xff01; 关于对 “传输层” 章节知识点总结的十分全面&#xff0c;涵括了《计算机网络》课程里的全…

MySQL 学习笔记(借鉴黑马程序员MySQL)

MySQL视频课链接 MySQL概述 数据库相关概念 数据库是存储数据的仓库&#xff0c;数据是有组织的进行存储&#xff08;DataBase&#xff09; 数据库管理系统是操纵和管理数据库的大型软件&#xff08;DataBase Management System&#xff09; SQL是操作关系型数据库的编程语…

_Linux (HTTP协议)

文章目录1. 认识URL2. urlencode和urldecode3. HTTP协议格式3-1. HTTP请求3-1. HTTP响应4. HTTP的方法5. HTTP的状态码6. TTP常见Header7. 最简单的HTTP服务器虽然我们说, 应用层协议是我们程序猿自己定的但实际上, 已经有大佬们定义了一些现成的, 又非常好用的应用层协议, 供我…

Android问题笔记 - 打开Android Studio先弹出项目选择框

专栏分享点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例 &#x1f449;关于作者 众所周知&#xff0c;人生是一个漫长的流程&#xff0c;不断克服困难&#xff0c;不断…

【JavaWeb】Servlet基础

文章目录1.Tomcat服务器安装注意事项2.编写WebApp3.BS系统角色和协议4.模拟Servlet4.1模拟sun公司4.2模拟Tomcat服务器4.3模拟WebApp开发者5.开发一个带有Servlet的WebApp5.1创建一个名为crm的项目5.2 在项目中创建一个名为WEB-INF的文件&#xff08;必须&#xff09;5.3在WEB-…

MATLAB常用函数-gcf / gca / gco

MATLAB R2019a gcf: 返回当前图像对象的句柄值 语法&#xff1a; h gcf % 返回当前图像的句柄&#xff0c;如果没有图像&#xff0c;则会自动创建一个&#xff0c;然后返回其句柄 gca: 返回当前坐标轴对象的句柄值 语法&#xff1a; h gca % 返回当前图像中的当前坐标…

21_FreeRTOS内存管理

目录 FreeRTOS内存管理 FreeRTOS内存管理算法 内存管理相关API函数介绍 实验源码 FreeRTOS内存管理 在使用FreeRTOS创建任务、队列、信号量等对象的时,一般都提供了两种方法: 动态方法创建 自动地从 FreeRTOS 管理的内存堆中申请创建对象所需的内存&#xff0c;并且在对…