Python自动化办公之Word文档的创建与生成
作者:渴望力量的哈士奇 发布时间:2022-06-16 17:49:43
上几章节我们主要学习了如何读取文章,而主要任务是读取文档中的文本信息,也就是字符串,而图片本身是不可读的文件所以并没有去读取图片。从今天开始将学习如何通过 python 脚本来自动生成一个 word 文档。
保存生成 word
在学习如何生成一个 word 文档之前,我们来看看如何保存生成 word 文件,因为马上就会用到。
使用方法:
document_obj.save(文件地址) ---> /home/demo.docx
代码示例如下:
# coding:utf-8
from docx import Document
doc = Document()
doc.save('test.docx')
运行结果如下:
生成标题
使用方法:
title_obj = DocumentObj.add_heading(标题内容, 标题样式等级) 通过 Document 对象调用 add_heading 函数 返回 标题对象。
标题样式等级:
0 <= lever <= 9
标题内容追加:
titleobj.add_run 通过标题对象调用 add_run 函数 进行标题内容的追加
代码示例如下:
# coding:utf-8
from docx import Document
doc = Document()
title = doc.add_heading('this is title', 1) # 添加 word 文件的 title 标题
title.add_run('\n - 测试版本') # 针对 title 标题进行内容追加(换行)
doc.save('test.docx')
运行结果如下:
生成段落
使用方法:
para_obj = document_obj.add_paragraph(段落内容) 通过 Document 对象调用 add_paragraph 函数 返回 段落对象。
段落内容追加:
para_obj.add_run(字符串内容)
换行方式:
\n 换行特殊字符来分割段落
代码示例如下:
# coding:utf-8
from docx import Document
doc = Document()
title = doc.add_heading('this is title', 1) # 添加 word 文件的 title 标题
title.add_run('\n - 测试版本') # 针对 title 标题进行内容追加(换行)
para = doc.add_paragraph('这是 \"test.docx\" 文件的第一行段落')
para.add_run('\n这是 \"test.docx\" 文件追加的的第二行段落')
doc.save('test.docx')
运行结果如下:
添加图片
使用方法:
image_obj = document_obj.add_picture(图片地址, 宽, 高) 通过 Document 对象调用 add_picture 函数 返回 图片对象。
宽高定义:
from docx.shared import Inches
add_picture(x, width=Inches(5), height=Inches(5))
代码示例如下:
# coding:utf-8
from docx import Document
from docx.shared import Inches
doc = Document()
title = doc.add_heading('this is title', 1) # 添加 word 文件的 title 标题
title.add_run('\n - 测试版本') # 针对 title 标题进行内容追加(换行)
para = doc.add_paragraph('这是 \"test.docx\" 文件的第一行段落')
para.add_run('\n这是 \"test.docx\" 文件追加的的第二行段落')
image = doc.add_picture('test_image.png', width=Inches(3), height=Inches(1.5))
doc.save('test.docx')
运行结果如下:
添加表格
使用方法:
table_obj = document_obj.add_table(row=行数, cols=列数) 通过 Document 对象调用 add_table 函数 返回 表格对象。
cell = table_obj.row[0].cells 表格对象调用 rows 返回表格的行对象
cell[0].text = 当前行 0 列的内容
cell[1].text = 当前行 1 列的内容
表格追加:
row_cell = table.add_row().cells
代码示例如下:
# coding:utf-8
from docx import Document
from docx.shared import Inches
doc = Document()
title = doc.add_heading('this is title', 1) # 添加 word 文件的 title 标题
title.add_run('\n - 测试版本') # 针对 title 标题进行内容追加(换行)
para = doc.add_paragraph('这是 \"test.docx\" 文件的第一行段落')
para.add_run('\n这是 \"test.docx\" 文件追加的的第二行段落')
image = doc.add_picture('test_image.png', width=Inches(3), height=Inches(1.5))
table_title = ['name', 'age', 'sex']
table = doc.add_table(rows=1, cols=3)
table_cells = table.rows[0].cells
table_cells[0].text = table_title[0]
table_cells[1].text = table_title[1]
table_cells[2].text = table_title[2]
data = [
('Neo', '18', 'man'),
('Adem', '17', 'man'),
('Lily', '18', 'women')
]
for i in data:
row_cells = table.add_row().cells
row_cells[0].text = i[0]
row_cells[1].text = i[1]
row_cells[2].text = i[2]
doc.save('test.docx')
运行结果如下:
分页
使用方法:
document_obj.add_page_break()
代码示例如下:
# coding:utf-8
from docx import Document
from docx.shared import Inches
doc = Document()
title = doc.add_heading('this is title', 1) # 添加 word 文件的 title 标题
title.add_run('\n - 测试版本') # 针对 title 标题进行内容追加(换行)
para = doc.add_paragraph('这是 \"test.docx\" 文件的第一行段落')
para.add_run('\n这是 \"test.docx\" 文件追加的的第二行段落')
image = doc.add_picture('test_image.png', width=Inches(3), height=Inches(1.5)) # 添加图片
table_title = ['name', 'age', 'sex'] # 定义表格的第一行的标题
table = doc.add_table(rows=1, cols=3) # 定义表格的行数、列数
table_cells = table.rows[0].cells # 将 table_title 的每列的名称写入表格
table_cells[0].text = table_title[0]
table_cells[1].text = table_title[1]
table_cells[2].text = table_title[2]
data = [ # 定义 data 的内容,准备将其追加写入表格
('Neo', '18', 'man'),
('Adem', '17', 'man'),
('Lily', '18', 'women')
]
for i in data: # 利用 for 循环将 data 追加写入表格
row_cells = table.add_row().cells
row_cells[0].text = i[0]
row_cells[1].text = i[1]
row_cells[2].text = i[2]
doc.add_page_break() # 添加 word 文件的分页
title = doc.add_heading('this is page_2 title', 1) # 添加 word 文件的第二分页的 title 标题
doc.save('test.docx')
运行结果如下:
来源:https://blog.csdn.net/weixin_42250835/article/details/124740739
猜你喜欢
- JS调试技巧技巧一:格式化压缩代码 技巧二:快速跳转到某个断点的位置右侧的Breakpoints会汇总你在JS文件所有打过的断点,点击跟ch
- 在进行python数据分析的时候,首先要进行数据预处理。有时候不得不处理一些非数值类别的数据,嗯, 今天要说的就是面对这些数据该如何处理。目
- 1.DNS查询过程:以查询 www.baidu.com为例(1)电脑向本地域名服务器发送解析www.baidu.com的请求(2)本地域名服
- 想查找mac下python的site-packages目录,如果用网上搜的安装目录之类的去找,进去每一层很多都是软链接形式存在,比较浪费时间
- 弄个随机数的东西,直接从网上找了一个现成的,简单看了两眼,感觉算法应该是对的,但今天测试下来,是不对的;网上大多数人用的写法是这样的:fun
- 本文实例讲述了python的keyword模块用法。分享给大家供大家参考。具体如下:Help on module keyword:NAME
- 写完“无序列表”和“有序列表”之后已经有人和我说这两篇看得没什么意思。这两篇文章如果只以单向读取的形式阅读那么的确是没什么意思,但是这两篇重
- 一个不错的文字放大特性源码。效果图:运行代码框<script for=document event=onmousemove>//
- 1069错误(由于登录失败而无法启动服务)解决方法在本版面出现这个问题的频率也算是很高的了,新手通常会比较多遇到这个问题原因很简单,安装SQ
- create or replace PROCEDURE proceudre_name AS BEGIN DECLARE sPara VARC
- 在SQL Server 2008 中,新的FILESTREAM 数据类型,允许像文件和图片这种大型的二进制数据可以直接在NTFS文件系统中进
- 应原书编辑要求,先在文章顶部给出链接:《Everything You Know About CSS Is Wrong》http://www.
- 大家经常用的是Adodb.Stream,但这时就有个缺陷,就是不支持断点续传了。经常看到flashget中是红脸(即不支持断点续传)其实支持
- SQL Server有几个版本都在使用中——4.2, 6.0, 6.5, 7.0, 2000,以及2
- 组合集总计: group by with rollup/cube grouping sets 子查询按执行方式分:标准子查询、关联子查询 标
- 动态语言与静态语言有很多不同,最大的特性之一就是可以实现动态的对类和实例进行修改,在Python中,我们创建了一个类后可以对实例和类绑定心的
- 本文以Python3.8为例1、 compileall py文件转换为pyc1.1、compileall命令行模式不需要额外安装,pytho
- 新建图像文件后选Channels面板,新建Alpha1通道:输入文字; &nbs
- div+css实现圆角边框,在网络上查看了一下,很多都是实现圆角的矩形的方法,我在这里介绍的是实现圆角矩形边框的方法。用代码说明问题:<
- 在网上查阅资料,发现很少用Python进行高斯函数的三维显示绘图的,原因可能是其图形显示太过怪异,没有MATLAB精细和直观。回顾一下二维高