python:一键批量生成含文字、图片和表格的word文档

我是智能取经人 2024-08-03 09:54:54

摘要: 在这个经济波动的时代,效率和方法决定了每个人的职场生涯。python自动化技术的引入为很多职场人解决了批量重复枯燥的文档处理。本文将带你领略Python在办公自动化中的神奇力量,实现批量word文档的生成,内容里的图片、文字、表格一键生成!

引言

在经济波动的大背景下,公司人事部经理小李面临着一项艰巨的任务:为上千名员工生成个性化的工资调整通知,进行公司发文。传统方法下,这不仅意味着要花费数千分钟在重复的复制粘贴工作中,更意味着巨大的出错风险。每一分钟的延误都可能导致员工的不满,每一次的错误都可能引发信任危机。小李深知,手工操作不仅效率低下,而且极易出错。在Excel和Word之间反复切换,从Excel名单中复制员工姓名,粘贴到Word模板中,再逐一保存,这样的过程枯燥且耗时。随着员工人数的增加,工作量呈指数级增长,错误率也随之上升。

1.问题的提出

小李在公众号后台留言了自己的问题:“如何快速、准确地为上千名员工生成个性化的工资调整通知文档?且文档中包含图片、文字、表格等多种形式”,这个问题看似简单,实则复杂。传统的手动操作不仅效率低下,而且极易出错。每一次的复制粘贴,都可能带来新的错误。

2.传统方法的局限性

在没有自动化工具的情况下,小李的工作流程是这样的:

打开Excel文件,查找员工的姓名和工资信息。打开Word模板,复制员工的姓名和工资信息。插入通知两字的图片,调整格式,确保文档的一致性。保存每个员工的文档。

这个过程不仅耗时,而且容易出错。每一次的复制粘贴都可能引入新的错误,每一次的格式调整都可能不一致。更重要的是,随着员工人数的增加,工作量呈指数级增长,错误率也随之上升。

3.Python自动化的解决方案

幸运的是,小李关注了我们的公众号,并在后台留言了自己的问题。通过我们编写的简单的Python脚本,他能够批量生成Word文档,将原本需要数千分钟的工作缩短至几秒钟。更重要的是,这个脚本不仅能够处理文字和表格,还能轻松插入图片,确保文档的专业性和一致性。

from docx import Documentfrom docx.enum.text import WD_ALIGN_PARAGRAPHfrom docx.shared import Ptfrom docx.oxml.ns import qnimport pandas as pdimport timefrom docx.shared import Inchess_t = time.time()# 全体员工姓名company_data = pd.read_excel("人员名单.xlsx")name_list = company_data["姓名"].tolist()salary_list = company_data["工资"].tolist()# print(company_data)# company_list = ['员工1', '员工1', '员工2', '员工3', '员工4',# '员工5', '员工6', '员工7', '员工8', '员工9', '员工10']#这里可以读取Excel表格中的花名册# price_list = [10000, 12000, 11000, 9000,# 9000, 9000, 9000, 9000, 9000, 9000, 15000,]# 当天的日期today = time.strftime("%Y{y}%m{m}%d{d}", time.localtime() ).format(y='年', m='月', d='日')for n, i in enumerate(name_list): salary = salary_list[n] document = Document() # 设置文档的基础字体 document.styles['Normal'].font.name = u'宋体' # 识别中文 document.styles['Normal'].element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体') document.add_picture('title002.jpg', width=Inches(6)) # 建立一个自然段 p1 = document.add_paragraph() # 对齐方式为居中,没有这句的话默认左对齐 p1.alignment = WD_ALIGN_PARAGRAPH.CENTER run1 = p1.add_run('关于%s工资调整的通知' % (today)) run1.font.name = '微软雅黑' run1.element.rPr.rFonts.set(qn('w:eastAsia'), u'微软雅黑') run1.font.size = Pt(21) run1.font.bold = True p1.space_after = Pt(5) p1.space_before = Pt(5) p2 = document.add_paragraph() run2 = p2.add_run(i + ':') run2.font.name = '宋体' run2.element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体') run2.font.size = Pt(16) run2.font.bold = True p3 = document.add_paragraph() run3 = p3.add_run('因为疫情影响,我们很抱歉的通知您,您的工资调整为每月%s元,特此通知' % salary) run3.font.name = '宋体' run3.element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体') run3.font.size = Pt(14) table = document.add_table(rows=2, cols=2, style='Table Grid') # 合并单元格 table.cell(0, 0).merge(table.cell(0, 1)) table_run1 = table.cell(0, 0).paragraphs[0].add_run('签名栏') table_run1.font.name = '黑体' table_run1.element.rPr.rFonts.set(qn('w:eastAsia'), u'黑体') table.cell(0, 0).paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER table.cell(1, 0).text = i table.cell(1, 0).paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER p4 = document.add_paragraph() p4.alignment = WD_ALIGN_PARAGRAPH.RIGHT run4 = p4.add_run('人事:王小姐 电话:686868') run4.font.name = '宋体' run4.element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体') run4.font.size = Pt(14) run4.font.bold = True document.save('%s-工资调整通知.docx' % i)e_t = time.time()print(f"共耗时{e_t-s_t}s")4.效果展示

通过上述脚本,小李可以轻松地为每一名员工生成一个包含文字、图片和表格的Word文档。每个文档都包含员工的姓名、原工资和调整后的工资。这样的自动化不仅提高了工作效率,还大大降低了出错的可能性。更重要的是,通过Python脚本,小李能够确保每个文档都包含图片、文字和表格,提升了文档的专业性和一致性。

5秒钟生成了175名员工的工资调整通知。

结语

在这个快节奏的时代,自动化技术的应用越来越广泛。通过Python脚本,我们不仅能够提高工作效率,还能减少人为错误,提升工作质量。希望本文能够帮助更多的像小李一样的管理者,解决他们的实际问题。

如果你也有类似的自动化需求,或者对Python脚本的编写有任何疑问,欢迎在评论区留言,我们将为你提供一对一的技术支持!

本文为原创技术文章,转载请标明出处。如果你喜欢本文,别忘了点赞、转发和关注我们的公众号,获取更多技术干货!

数海丹心

大数据和人工智能知识分享与应用

132篇原创内容

公众号

0 阅读:0

我是智能取经人

简介:感谢大家的关注