Python3,3行代码,把excel转换成任意格式的word文档,老板直接给我涨薪10K!!!

简介: Python3,3行代码,把excel转换成任意格式的word文档,老板直接给我涨薪10K!!!

1、引言


小屌丝:鱼哥,有一事相求?

小鱼:何事,说来听听!

小屌丝:BOSS让我把exce转成word,

小鱼:这还不简单,你直接修改文件后缀名不就行了。

小屌丝:你可以伤害我,但是不能侮辱我…

小鱼:额…好吧,就这一点要求吗?

小屌丝:不是的,excel中题目和答案,老板让我给区分来,整理成两个word文档

小鱼:呦呵… BOSS就是BOSS,要求都这么高大上

小屌丝:BOSS说了,下个月能不能涨薪,就看这次表现了…

小鱼:这… 不是事啊~ ~

小屌丝:接文件…

小鱼:…


为了信息安全,小鱼就把小屌丝的文件内容给替换一下。

这样能更直观的展示,也方便理解。


文档内容截图

image.png


2、excel转换成word


看到上面的截图,我们来想一下,一般的转换方式,无非就两种:


手动转换

自动转换

如果不借助于收费软件,手动转换的话,可能就会麻烦一点;

如果想省钱省时省力,代码转换会更直接。


有了这两个思路,我们就来看看到底怎么实现。


2.1 手动转换


这里手动转换的方法不唯一,小鱼这里就列举一种常用的方法:

先转换成PDF文件,再转换成Word,步骤如下:


步骤一、excel的另存为".pdf",

image.png


步骤二、将PDF文件,转存为.docx

image.png


由于小鱼的电脑没有pdf,所以就不演示另存为word了


但是pdf转换word有一个弊端,就是默认情况下,转换页数有限制,这也就是资本家割韭菜的原因。


2.2 自动转换


小屌丝:韭…菜…

小鱼:咋的,不让当韭菜,还不习惯了?

小屌丝:我从小到大被割这么多次,还差这一次!


小屌丝的女友是富婆,所以不在乎;

但是小鱼却不想当韭菜,所以,就用技术来武(解)装(放)自己。


2.2.1 docxtpl 介绍


我们来看一下官网的介绍:

This package uses 2 major packages :


python-docx for reading, writing and creating sub documents

jinja2 for managing tags inserted into the template docx

python-docx-template has been created because python-docx is powerful for creating documents but not for modifying them.


The idea is to begin to create an example of the document you want to generate with microsoft word, it can be as complex as you want : pictures, index tables, footer, header, variables, anything you can do with word. Then, as you are still editing the document with microsoft word, you insert jinja2-like tags directly in the document. You save the document as a .docx file (xml format) : it will be your .docx template file.


Now you can use python-docx-template to generate as many word documents you want from this .docx template and context variables you will associate.


Note : python-docx-template as been tested with MS Word 97, it may not work with other version.


我给大概翻译一下:


docxtpl 主要有两个软件包:


python-docx 用于读取、写入和创建子文档

jinja2 用于管理插入到模板 docx 中的标签

之所以创建 python-docx-template ,是因为 python-docx 在创建文档方面功能强大,但不能用于修改文档。

这个想法起源于想生成word文档,它可以是你想要的任何复杂的,如:图片、索引表、页脚、页眉、变量、和你想要做的任何事情。由于还在使用Word编辑文档,所以可以直接在Word中插入jinja2的标签。将文档另存为.docx文件(xml 格式):它将成为您的 .docx 模板文件。


小屌丝:鱼哥,我咋看的一脸懵x?

鱼哥:嗯,因为你不了解docxtpl。但是,跟着鱼哥的脚步,保你不在懵逼。


老规矩,先安装再使用:**


1、docxtpl安装


pip install docxtpl


安装完,就可以撸码了:

2、代码展示:


# -*- coding:utf-8 -*-
# @Time   : 2021-08-25
# @Author : carl_DJ
from docxtpl import DocxTemplate
'''
步骤:
1、读取需要保存的模板,
2、读取原excel表数据的值并输出
3、按照模本保存数据
'''
doc = DocxTemplate("my_word_template.docx")
context = { 'company_name' : "World company" }
doc.render(context)
doc.save("generated_doc.docx")


这段代码,很简单,也很直白。


步骤:

1、读取需要保存的模板,

2、读取原excel表数据的值并输出

3、按照模本保存数据


因为保存word,我们需要jinja2的模板,如下:

docx文档使用模本


{%p if display_paragraph %}
Here is my paragraph
{%p endif %}


温馨提示:


这里把 "p"去掉,也可以运行,但是为了代码正确性,还是按照文档来写。


关于jinja2更多的用法:下载并查阅官方文档, 点击下载文档。


2.2.2 代码实战


上面介绍了docxtpl的用法和jinja2的docx模板,

接下来,我们就要用3行代码,把excel转换成word。

步骤如下:


首先、我们得准备3个文档:


① excel原数据文档

image.png


② word文档模板

image.png


③ 转换后的word文档

这是一个空文档,但是文件名称必须得安排上,否则运行代码会报错。


其次、编写代码


# -*- coding:utf-8 -*-
# @Time   : 2021-08-25
# @Author : carl_DJ
import pandas as pd
from docxtpl import DocxTemplate
#excel原文档数据,这里使用pandas,来读取excel原文件数据
df = pd.read_excel('个人喜好文档.xlsx')
df.sort_values(["章","节"],inplace = True)
#把excel原文档数据通过jinja2模板匹配后,保存到word文档
#这个文档保存的是问题集
tpl = DocxTemplate("个人喜好问题模板.docx")
tpl.render({'ps':df[["章","节","标号","题目"]].values.tolist()})
tpl.save("个人喜好问题集.docx")
#同样重复excel读jinja2模本与保存word的动作
#这个word保存的是答案集
tpl = DocxTemplate("个人喜好答案模板.docx")
tpl.render({'ps':df[["章","节","标号","答案","来源","收集人"]].values.tolist()})
tpl.save("个人喜好答案集.docx")


运行后,我们看看word文档里面内容:


个人喜好问题集.docx

image.png

个人喜好答案集.docx

image.png

如果不了解Pandas,那么就去看小鱼的这篇博文:

《数据分析之Pandas从入门到放弃:代码+实战,9分钟带你推开Pandas大门!!!》

小屌丝:9分钟,你有计算过这个时间吗?难道不能是8分钟、10分钟?

小鱼:…那我是不是得改成:大概9分钟带你推开Pandas大门…


3、总结


写到这里,又要告一段落了,

今天就不扯太多了,毕竟…时间不早了。

我也得留一点时间给妹子,不然…


最后一句话,

时间总是很匆忙,但是脚本却从未迈出!

收工

目录
相关文章
|
3月前
|
XML 数据格式 Python
从手动编辑到代码生成:Python 助你高效创建 Word 文档
本文介绍如何用Python实现Word文档自动化生成,结合python-docx、openpyxl和matplotlib库,高效完成报告撰写、数据插入与图表生成,大幅提升办公效率,降低格式错误,实现数据驱动的文档管理。
644 2
|
5月前
|
安全 JavaScript 开发者
Python 自动化办公神器|一键转换所有文档为 PDF
本文介绍一个自动化批量将 Word、Excel、PPT、TXT、HTML 及图片转换为 PDF 的 Python 脚本。支持多格式识别、错误处理与日志记录,适用于文档归档、报告整理等场景,大幅提升办公效率。仅限 Windows 平台,需安装 Office 及相关依赖。
295 0
|
10月前
|
SQL 自然语言处理 数据库
【Azure Developer】分享两段Python代码处理表格(CSV格式)数据 : 根据每列的内容生成SQL语句
本文介绍了使用Python Pandas处理数据收集任务中格式不统一的问题。针对两种情况:服务名对应多人拥有状态(1/0表示),以及服务名与人名重复列的情况,分别采用双层for循环和字典数据结构实现数据转换,最终生成Name对应的Services列表(逗号分隔)。此方法高效解决大量数据的人工处理难题,减少错误并提升效率。文中附带代码示例及执行结果截图,便于理解和实践。
281 4
|
4月前
|
小程序
公众号如何添加附传Word、Excel、Pdf、PPT文档
公众号里添加一些文档给公众号粉丝下载,比如课件PPT、申请表Word文档、岗位需求Excel表、大赛入围/获奖名单等。公众号本身是不支持直接上传文件的,但我们可以通过附件小程序“间接”上传文件。
719 0
|
6月前
|
XML Linux 区块链
Python提取Word表格数据教程(含.doc/.docx)
本文介绍了使用LibreOffice和python-docx库处理DOC文档表格的方法。首先需安装LibreOffice进行DOC到DOCX的格式转换,然后通过python-docx读取和修改表格数据。文中提供了详细的代码示例,包括格式转换函数、表格读取函数以及修改保存功能。该方法适用于Windows和Linux系统,解决了老旧DOC格式文档的处理难题,为需要处理历史文档的用户提供了实用解决方案。
758 0
|
5月前
|
监控 Linux 数据安全/隐私保护
Python实现Word转PDF全攻略:从入门到实战
在数字化办公中,Python实现Word转PDF自动化,可大幅提升处理效率,解决格式兼容问题。本文详解五种主流方案,包括跨平台的docx2pdf、Windows原生的pywin32、服务器部署首选的LibreOffice命令行、企业级的Aspose.Words,以及轻量级的python-docx+pdfkit组合。每种方案均提供核心代码与适用场景,并涵盖中文字体处理、表格优化、批量进度监控等实用技巧,助力高效办公自动化。
1395 0
|
6月前
|
Python
Python 办公实战:用 python-docx 自动生成 Word 文档
本文详解如何使用 python-docx 库实现 Word 文档自动化生成,涵盖环境搭建、文档创建、格式设置、表格与图片处理、模板填充、批量生成及性能优化等实战技巧,助你高效完成办公场景中的文档自动化任务。
1793 1
|
Python
Python格式
Python格式
146 5
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
591 1
|
存储 数据处理 索引
Python操作Excel常用方法汇总
Python操作Excel常用方法汇总
554 0

推荐镜像

更多