首页 >word操作 > 内容

〖Python自动化办公篇⑧〗- word文件自动化 - 创建并生成 word 文档

2023年1月22日 12:33
万叶集
? 隐约雷鸣,阴霾天空。 ?
? 但盼风雨来,能留你在此。 ?


前言
✌ 作者简介:渴望力量的哈士奇 ✌,大家可以叫我 ?哈士奇? ,一位致力于 TFS - 全栈 赋能的博主 ✌
? CSDN博客专家认证、新星计划第三季全栈赛道 top_1 、华为云享专家、阿里云专家博主 ?
? 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步?
? 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。?
? 如果感觉博主的文章还不错的话,还请?关注、点赞、收藏三连支持?一下博主哦


专栏系列(点击解锁)学习路线指引知识定位
?Python全栈白皮书? 零基础入门篇 以浅显易懂的方式轻松入门,让你彻底爱上Python的魅力。
语法进阶篇 主要围绕多线程编程、正则表达式学习、含贴近实战的项目练习 。
自动化办公篇 实现日常办公软件的自动化操作,节省时间、提高办公效率。
自动化测试实战篇 从实战的角度出发,先人一步,快速转型测试开发工程师。
数据库开发实战篇 更新中
爬虫入门与实战 更新中
数据分析篇 更新中
前端入门+flask 全栈篇 更新中
django+vue全栈篇 更新中
拓展-人工智能入门 更新中
网络安全之路 踩坑篇 记录学习及演练过程中遇到的坑,便于后来居上者
网安知识扫盲篇 三天打鱼,不深入了解原理,只会让你成为脚本小子。
vulhub靶场漏洞复现 让漏洞复现变得简单,让安全研究者更加专注于漏洞原理本身。
shell编程篇 不涉及linux基础,最终案例会偏向于安全加固方向。 [待完结]
WEB漏洞攻防篇 2021年9月3日停止更新,转战先知社区等安全社区及小密圈
渗透工具使用集锦 2021年9月3日停止更新,转战先知社区等安全社区及小密圈
点点点工程师 测试神器 - Charles 软件测试数据包抓包分析神器
测试神器 - Fiddler 一文学会 fiddle ,学不会倒立吃翔,稀得!
测试神器 - Jmeter 不仅是性能测试神器,更可用于搭建轻量级接口自动化测试框架。
RobotFrameWork Python实现的自动化测试利器,该篇章仅介绍UI自动化部分。
Java实现UI自动化 文档写于2016年,Java实现的UI自动化,仍有借鉴意义。
MonkeyRunner 该工具目前的应用场景已不多,文档已删,为了排版好看才留着。


上几章节我们主要学习了如何读取文章,而主要任务是读取文档中的文本信息,也就是字符串,而图片本身是不可读的文件所以并没有去读取图片。从今天开始将学习如何通过 python 脚本来自动生成一个 word 文档。

? 保存生成 word

在学习如何生成一个 word 文档之前,我们来看看如何保存生成 word 文件,因为马上就会用到。

使用方法:

document_obj.save(文件地址) ---> /home/demo.docx

代码示例如下:

# coding:utf-8from docx import Documentdoc = Document()doc.save('test.docx')

运行结果如下:



? 生成标题

使用方法:

title_obj = DocumentObj.add_heading(标题内容, 标题样式等级) 通过 Document 对象调用 add_heading 函数 返回 标题对象


标题样式等级:

0 <= lever <= 9


标题内容追加:

titleobj.add_run 通过标题对象调用 add_run 函数 进行标题内容的追加

代码示例如下:

# coding:utf-8from docx import Documentdoc = 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-8from docx import Documentdoc = 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-8from docx import Documentfrom docx.shared import Inchesdoc = 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-8from docx import Documentfrom docx.shared import Inchesdoc = 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].cellstable_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-8from docx import Documentfrom docx.shared import Inchesdoc = 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

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时候联系我们修改或删除,在此表示感谢。

特别提醒:

1、请用户自行保存原始数据,为确保安全网站使用完即被永久销毁,如何人将无法再次获取。

2、如果上次文件较大或者涉及到复杂运算的数据,可能需要一定的时间,请耐心等待一会。

3、请按照用户协议文明上网,如果发现用户存在恶意行为,包括但不限于发布不合适言论妄图

     获取用户隐私信息等行为,网站将根据掌握的情况对用户进行限制部分行为、永久封号等处罚。

4、如果文件下载失败可能是弹出窗口被浏览器拦截,点击允许弹出即可,一般在网址栏位置设置

5、欢迎将网站推荐给其他人,网站持续更新更多功能敬请期待,收藏网站高效办公不迷路。

      



登录后回复

共有0条评论