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、总结


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

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

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


最后一句话,

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

收工

目录
相关文章
|
21天前
|
Java API Apache
Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
【10月更文挑战第29天】Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
90 5
|
1月前
|
数据采集 Python
Python实用记录(七):通过retinaface对CASIA-WebFace人脸数据集进行清洗,并把错误图路径放入txt文档
使用RetinaFace模型对CASIA-WebFace人脸数据集进行清洗,并将无法检测到人脸的图片路径记录到txt文档中。
42 1
|
1月前
|
Python
Python实用记录(六):如何打开txt文档并删除指定绝对路径下图片
这篇文章介绍了如何使用Python打开txt文档,删除文档中指定路径的图片,并提供了一段示例代码来展示这一过程。
30 1
|
17天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
63 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
1月前
|
数据处理 Python
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
这篇文章介绍了如何使用Python读取Excel文件中的数据,处理后将其保存为txt、xlsx和csv格式的文件。
52 3
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
|
1月前
|
计算机视觉 Python
Python实用记录(九):将不同的图绘制在一起、将不同txt文档中的数据绘制多条折线图
这篇文章介绍了如何使用Python的OpenCV库将多张图片合并为一张图片显示,以及如何使用matplotlib库从不同txt文档中读取数据并绘制多条折线图。
43 3
Python实用记录(九):将不同的图绘制在一起、将不同txt文档中的数据绘制多条折线图
|
29天前
|
数据挖掘
Excel条件格式
【10月更文挑战第21天】Excel条件格式
49 2
|
30天前
|
数据可视化 数据挖掘
Excel条件格式高级应用
【10月更文挑战第20天】Excel条件格式高级应用
34 3
|
1月前
|
Python
python读写操作excel日志
主要是读写操作,创建表格
60 2
|
1月前
|
数据采集 存储 JavaScript
自动化数据处理:使用Selenium与Excel打造的数据爬取管道
本文介绍了一种使用Selenium和Excel结合代理IP技术从WIPO品牌数据库(branddb.wipo.int)自动化爬取专利信息的方法。通过Selenium模拟用户操作,处理JavaScript动态加载页面,利用代理IP避免IP封禁,确保数据爬取稳定性和隐私性。爬取的数据将存储在Excel中,便于后续分析。此外,文章还详细介绍了Selenium的基本设置、代理IP配置及使用技巧,并探讨了未来可能采用的更多防反爬策略,以提升爬虫效率和稳定性。
下一篇
无影云桌面