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


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

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

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


最后一句话,

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

收工

目录
相关文章
|
1月前
|
数据可视化 数据挖掘 大数据
1.1 学习Python操作Excel的必要性
学习Python操作Excel在当今数据驱动的商业环境中至关重要。Python能处理大规模数据集,突破Excel行数限制;提供丰富的库实现复杂数据分析和自动化任务,显著提高效率。掌握这项技能不仅能提升个人能力,还能为企业带来价值,减少人为错误,提高决策效率。推荐从基础语法、Excel操作库开始学习,逐步进阶到数据可视化和自动化报表系统。通过实际项目巩固知识,关注新技术,为职业发展奠定坚实基础。
|
2月前
|
机器学习/深度学习 前端开发 数据处理
利用Python将Excel快速转换成HTML
本文介绍如何使用Python将Excel文件快速转换成HTML格式,以便在网页上展示或进行进一步的数据处理。通过pandas库,你可以轻松读取Excel文件并将其转换为HTML表格,最后保存为HTML文件。文中提供了详细的代码示例和注意事项,帮助你顺利完成这一任务。
105 0
|
2月前
|
Python
Python格式
Python格式
34 5
|
2月前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
305 10
|
3月前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
190 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
3月前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
3月前
|
Java API Apache
Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
【10月更文挑战第29天】Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
207 5
|
4月前
|
数据挖掘
Excel条件格式
【10月更文挑战第21天】Excel条件格式
123 2
|
4月前
|
数据可视化 数据挖掘
Excel条件格式高级应用
【10月更文挑战第20天】Excel条件格式高级应用
84 3
|
4月前
|
Python
python读写操作excel日志
主要是读写操作,创建表格
83 2

热门文章

最新文章

推荐镜像

更多