当前位置: 首页 > news >正文

使用 python-docx 库操作 word 文档(2):在word文档中插入各种内容

使用 python-docx 库操作 word 文档(2):在word文档中插入各种内容

目录

  • 使用 python-docx 库操作 word 文档(2):在word文档中插入各种内容
    • 一、相关概念
        • 1、Document对象
        • 2、paragraph对象
        • 3、run对象
        • 4、table对象
    • 二、添加标题
    • 三、插入段落
    • 四、插入块(run)
    • 五、插入分页符
    • 六、插入图片
    • 七、插入表格

一、相关概念

1、Document对象

Document对象表示整个文档。

2、paragraph对象

每一个段落代表一个paragraph对象。

3、run对象

一个run对象指的是paragraph对象中相同样式的连续文字。

4、table对象

table对象指的是一个单独的表格。一个表包含行(row)、列(column)和单元格(cell)。

以上各类对象之间的关系如下图所示:

在这里插入图片描述

二、添加标题

本节用到的函数及属性如下表所示:

函数/属性用法
docx.Document()创建word文档
doc.add_heading(content,level)添加标题
doc.save(path)保存word文档

例如:

from docx import Documentdef create_word():    doc1 = Document()   # 创建word文档    doc1.add_heading('欢迎使用Python创建Word',0)  # 增加0级标题doc1.add_heading('Python操作 增加1级标题',1)  # 增加1级标题doc1.add_heading('Python操作 增加2级标题',2)  # 增加2级标题    doc1.save(r'D:\0工作文档\word文档\test.docx')  # 保存文档 
if __name__ == '__main__':create_word()

程序的运行结果如下图所示:

在这里插入图片描述

三、插入段落

本节用到的函数及属性如下表所示:

函数/属性用法
doc.add.paragraph(content,style)添加段落
paragraph.add_run(content)添加块

例如:

from docx import Document
from docx.enum.style import WD_BUILTIN_STYLEdef create_word():doc1 = Document()    # 创建一个word文档doc1.add_paragraph('七律·长征','heading 1')    # 增加段落信息,使用【标题1】样式par1=doc1.add_paragraph('作者:毛泽东\n')par1.add_run('红军不怕远征难,万水千山只等闲。\n')    par1.add_run('五岭逶迤腾细浪,乌蒙磅礴走泥丸。\n')   par1.add_run('金沙水拍云崖暖,大渡桥横铁索寒。\n')   par1.add_run('更喜岷山千里雪,三军过后尽开颜。\n')   doc1.add_paragraph('译文','heading 2')doc1.add_paragraph('红军不怕万里长征路上的一切艰难困苦,把千山万水都看得极为平常。\n五岭山脉绵延不绝,可在红军眼里不过像翻腾着的细小波浪;乌蒙山高大雄伟,在红军眼里也不过像在脚下滚过的泥丸。\n金沙江浊浪滔天,湍急的流水拍击着高耸的山崖,溅起阵阵雾水,像是冒出蒸汽一样。大渡河险桥横架,晃动着凌空高悬的根根铁索,寒意阵阵。\n更加令人欣喜的是千里岷山,皑皑白雪,红军翻越过去以后人人心情开朗,个个笑逐颜开。')# 增加无序列表doc1.add_paragraph('新乡市的高校:')doc1.add_paragraph('河南科技学院',style='List Bullet')doc1.add_paragraph('河南医药大学',style='List Bullet')doc1.add_paragraph('河南师范大学',style='List Bullet')doc1.add_paragraph('河南工学院',style='List Bullet')doc1.add_paragraph('新乡学院',style='List Bullet')# 增加有序列表doc1.add_paragraph('新乡市的高校:')doc1.add_paragraph('河南师范大学',style='List Number')doc1.add_paragraph('河南医药大学',style='List Number')doc1.add_paragraph('河南科技学院',style='List Number')doc1.add_paragraph('河南工学院',style='List Number')doc1.add_paragraph('新乡学院',style='List Number')# 保存word文档doc1.save(r'D:\0工作文档\word文档\test.docx')  # 保存文档 
if __name__ =='__main__':create_word()

程序的运行结果如下图所示:

在这里插入图片描述

四、插入块(run)

代码如下:

from docx import Documentdef create_word():doc1 = Document()  # 创建一个word文档doc1.add_paragraph('七律·长征', 'Title')  # 增加段落信息,使用【标题1】样式par1 = doc1.add_paragraph('作者:毛泽东\n')par1.add_run('红军不怕远征难,万水千山只等闲。\n')par1.add_run('五岭逶迤腾细浪,乌蒙磅礴走泥丸。\n')par1.add_run('金沙水拍云崖暖,大渡桥横铁索寒。\n')par1.add_run('更喜岷山千里雪,三军过后尽开颜。')par1.runs[0].bold = Truepar1.runs[1].underline = Truepar1.runs[2].italic = Truepar1.runs[3].underline = Truepar1.runs[4].italic = Truedoc1.save(r'D:\0工作文档\word文档\test.docx')  # 保存文档if __name__ == '__main__':create_word()

程序的运行结果如下图所示:

在这里插入图片描述

五、插入分页符

插入分页符使用add_page_break,代码如下:

from docx import Document
from docx.enum.style import WD_BUILTIN_STYLEdef create_word():doc1 = Document()    # 创建一个word文档doc1.add_paragraph('七律·长征','title')    # 增加段落信息,使用【标题1】样式par1=doc1.add_paragraph('作者:毛泽东\n')par1.add_run('红军不怕远征难,万水千山只等闲。\n')    par1.add_run('五岭逶迤腾细浪,乌蒙磅礴走泥丸。\n')   par1.add_run('金沙水拍云崖暖,大渡桥横铁索寒。\n')   par1.add_run('更喜岷山千里雪,三军过后尽开颜。\n')   doc1.add_paragraph('译文','titile')doc1.add_paragraph('红军不怕万里长征路上的一切艰难困苦,把千山万水都看得极为平常。\n五岭山脉绵延不绝,可在红军眼里不过像翻腾着的细小波浪;乌蒙山高大雄伟,在红军眼里也不过像在脚下滚过的泥丸。\n金沙江浊浪滔天,湍急的流水拍击着高耸的山崖,溅起阵阵雾水,像是冒出蒸汽一样。大渡河险桥横架,晃动着凌空高悬的根根铁索,寒意阵阵。\n更加令人欣喜的是千里岷山,皑皑白雪,红军翻越过去以后人人心情开朗,个个笑逐颜开。')doc1.add_page_break()   #  在此处插入一个分页符# 增加无序列表doc1.add_paragraph('新乡市的高校:')doc1.add_paragraph('河南科技学院',style='List Bullet')doc1.add_paragraph('河南医药大学',style='List Bullet')doc1.add_paragraph('河南师范大学',style='List Bullet')doc1.add_paragraph('河南工学院',style='List Bullet')doc1.add_paragraph('新乡学院',style='List Bullet')# 增加有序列表doc1.add_paragraph('新乡市的高校:')doc1.add_paragraph('河南师范大学',style='List Bullet')doc1.add_paragraph('河南医药大学',style='List Bullet')doc1.add_paragraph('河南科技学院',style='List Bullet')doc1.add_paragraph('河南工学院',style='List Bullet')doc1.add_paragraph('新乡学院',style='List Bullet')# 保存word文档doc1.save(r'D:\0工作文档\word文档\test.docx')  # 保存文档 
if __name__ =='__main__':create_word()

六、插入图片

本节用到的函数及属性如下表所示:

函数/属性用法
doc.add_picture(path,width,height)添加图片
pic.width获取图片宽度
pic.height获取图片高度
doc.sections[0].page_width获取页面宽度
doc.sections[0].left_margin获取页面高度

例如:

from docx import Documentdef create_word():doc1 = Document()    page_width = doc1.sections[0].page_width    # 获取文档的宽度page_left_width = doc1.sections[0].left_margin    # 获取文档的左边距print(page_width)print(page_left_width)content_width = page_width-page_left_width*2    # 获取中间内容的宽度print(content_width)doc1.add_heading("插入图片如下",level=0)# 增加图片,设置图片的宽度占文档宽度的一半    pic = doc1.add_picture(r'D:\0工作文档\typora文档\word\pic01.jpg',int(content_width*0.5))  doc1.save(r'D:\0工作文档\typora文档\word\pic.docx')    # 保存文档if __name__ == '__main__':create_word()

程序的运行结果如下图所示:
在这里插入图片描述

七、插入表格

本节用到的函数及属性如下表所示:

函数/属性用法
doc.add_table(rows=x,cols=x)添加表格
table.add_row()添加行

例如:

from docx import Document
def create_table():doc1 = Document()    # 创建word文档t1 = doc1.add_table(1,4)    # 添加一个1行4列的表格# 设置表格的内容t1.rows[0].cells[0].text = '学号't1.rows[0].cells[1].text = '姓名't1.rows[0].cells[2].text = '性别't1.rows[0].cells[3].text = '班级'data = ((1,'刘备','男','物流231班'),(2,'孙权','女','物流231班'),(3,'曹操','男','物流232班'))for s_id,s_name,s_gender,s_class in data:row = t1.add_row()        # 增加一行数据row.cells[0].text = str(s_id)   # 注意:要把数值型转换为文本类型row.cells[1].text = s_namerow.cells[2].text = s_genderrow.cells[3].text = s_classdoc1.save(r'D:\0工作文档\typora文档\word\table.docx')    # 保存文档if __name__ =='__main__':create_table()

程序的运行结果如下图所示:

在这里插入图片描述

http://www.dtcms.com/a/464787.html

相关文章:

  • 中企动力销售工作内容白城网站seo
  • 从0死磕全栈之Next.js 企业级 `next.config.js` 配置详解:打造高性能、安全、可维护的中大型项目
  • 在JavaScript中,const和var的区别
  • 【SDR课堂第36讲】RFSOC PS软件开发入门指南(一)
  • 学做网站中国设计网站导航
  • [嵌入式系统-84]:NPU/TPU/LPU有指令集吗?
  • 光伏安全协议-安全责任协议书8篇
  • Java 单元测试全攻略:JUnit 生命周期、覆盖率提升、自动化框架与 Mock 技术
  • SaaS多租户数据隔离实战:MyBatis拦截器实现行级安全方案
  • 【深入理解计算机网络08】网络层之IPv4
  • 网站的标签wordpress 导航栏居中
  • 解决电脑提示“0xc000007b错误”的简单指南
  • 【STM32项目开源】基于STM32的智能家居安防系统
  • 网络营销方式思维导图aso优化榜单
  • HKM9000视频处理卡
  • 机器视觉的平板显示屏加强膜贴合应用
  • 安卓玩机工具----手机秒变电脑麦克风
  • Win10系统笔记本电脑设置合上盖子自动锁屏
  • LLaMA: Open and Efficient Foundation Language Models 论文阅读
  • LeetCode——Hot 100【全排列】
  • 云南大理拍婚纱照价格表建网站优化
  • 双目测距实战1-环境配置
  • 2025人工智能在无人机数据处理中的应用
  • 阿里开源Qwen3-Omni-30B-A3B三剑客——Instruct、Thinking 和 Captioner
  • 长春建站程序湖南网络科技有限公司
  • xtuoj Can you raed it croretcly?
  • 异构动作空间
  • 【Nginx开荒攻略】Nginx虚拟主机配置:从域名、端口到IP的完整指南
  • 小杰深度学习(nine)——CUDA与CuDNN安装
  • 鸿蒙NEXT USB Host模式开发完全指南