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


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

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

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


最后一句话,

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

收工

目录
相关文章
|
30天前
|
监控 数据处理 索引
使用Python批量实现文件夹下所有Excel文件的第二张表合并
使用Python和pandas批量合并文件夹中所有Excel文件的第二张表,通过os库遍历文件,pandas的read_excel读取表,concat函数合并数据。主要步骤包括:1) 遍历获取Excel文件,2) 读取第二张表,3) 合并所有表格,最后将结果保存为新的Excel文件。注意文件路径、表格结构一致性及异常处理。可扩展为动态指定合并表、优化性能、日志记录等功能。适合数据处理初学者提升自动化处理技能。
22 1
|
1月前
|
XML 关系型数据库 MySQL
python将word(doc或docx)的内容导入mysql数据库
用python先把doc文件转换成docx文件(这一步也可以不要后续会说明),然后读取docx的文件并另存为htm格式的文件(上一步可以直接把doc文件另存为htm),python根据bs4获取p标签里的内容,如果段落中有图片则保存图片。(图片在word文档中的位置可以很好的还原到生成的数据库内容) 我见网上有把docx压缩后解压获取图片的,然后根据在根据xml来读取图片的位置,我觉得比较繁琐。用docx模块读取段落的时候还需要是不是判断段落中有分页等,然而转成htm之后就不用判断那么多直接判断段落里的样式或者图片等就可以了。
22 1
|
1月前
|
存储 BI 数据处理
Python自动化 | 解锁高效办公利器,Python助您轻松驾驭Excel!
Python自动化 | 解锁高效办公利器,Python助您轻松驾驭Excel!
|
6天前
|
数据挖掘 索引 Python
Python 读写 Excel 文件
Python 读写 Excel 文件
11 0
|
7天前
|
BI 开发者 数据格式
Python代码填充数据到word模板中
【4月更文挑战第16天】
|
8天前
05-python之函数-函数的定义/函数的参数/函数返回值/函数说明文档/函数的嵌套使用/函数变量的作用域
05-python之函数-函数的定义/函数的参数/函数返回值/函数说明文档/函数的嵌套使用/函数变量的作用域
|
23天前
|
Python
python使用tkinter库,封装操作excel为GUI程序
python使用tkinter库,封装操作excel为GUI程序
|
30天前
|
数据采集 存储 Web App开发
一键实现数据采集和存储:Python爬虫、Pandas和Excel的应用技巧
一键实现数据采集和存储:Python爬虫、Pandas和Excel的应用技巧
|
1月前
|
Python
Python教程:如何向Word中添加表格
Microsoft Word是一种流行的文档处理软件,广泛用于创建各种类型的文档,包括报告、简历、手册等。Python提供了许多库来处理Microsoft Word文档,其中包括`python-docx`,它使我们能够轻松地创建、修改和操作Word文档。本文将介绍如何使用Python的`python-docx`库向Word文档中添加表格。
19 0
|
23天前
|
SQL 缓存 easyexcel
面试官问10W 行级别数据的 Excel 导入如何10秒处理
面试官问10W 行级别数据的 Excel 导入如何10秒处理
51 0