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

python-word添加标题,段落,文字块

安装与使用python-docx
        要使用必须先安装,要安装python-docx还是在Pycharm的终端(Terminal)中输入pip install
python-docx,如下所示(Successfully installed)便是表示安装成功了。

新建与保存word

python-docx模块已经安装好了,我们直接利用它新建一个全新的word文档,直接上代码:

from docx import Document
document = Document() #创建一个空文档
document.save(r'D:\自动化\word\道德经.docx') # 保存文件

        运行后,在 D:\自动化\word 日录下就多出了一个道德经,docx 文档了。因为只是创建了一个空文档所以打开里面什么也没有,是空白的。
        代码很简单,首先导入docx库,这里需要注意一点,虽然我们安装的是python-docx模块,但是使用时是导入的docx,从代码中第一行可以看出。
        第二行就是新建-个Document。
        第三行则是将新建的Document保存到D:\自动化\word\道德经,docx。

写入Word
我们通过代码打开刚才创建的道德经.docx 来插入一些数据看看,上代码:

from docx import Document
from docx.shared import Inches, Cmdocument = Document() #创建一个空文档
document.save(r'D:\自动化\word\道德经.docx') # 保存文件# 打开一个document
file_path = r'D:\自动化\word\道德经.docx'
document = Document(file_path)#设置标题段落
document.add_heading('道德经',0)#添加段落
p =document.add_paragraph('道可道,非常道:名可名非常名。')
p.add_run('无名,天地之始,').bold=True#在指定段落后添加粗体文字
p.add_run('有名')#在制定段落后添加默认格式文字
p.add_run('万物之母。').italic=True#在指定段落后添加斜体文字#添加1级标题=标题1
document.add_heading('故常无欲',level=1)
# 添加指定格式段落 style后面则是样式
document.add_paragraph('以观其妙,', style='Intense Quote')
# 添加段落,样式为List Bullet类型
document.add_paragraph('常有欲,以观其徼。', style='List Bullet')
# 添加段落,样式为List Number类型
document.add_paragraph('此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。', style='List Number')
document.add_paragraph('所以说,buff老师教Python,教得妙。', style='List Number')# 添加图片
img_path = r'D:\自动化\word\girl.png'
document.add_picture(img_path)
document.add_picture(img_path, width=Inches(1.25))
document.add_picture(img_path, width=Cm(5), height=Cm(5))# 待添加到表格的内容
records = [(1, '李白', '诗仙'),(2, '杜甫', '诗圣'),(3, '白居易', '香山居士, 与元稹并称元白, 与刘禹锡合称刘白')
]
# 添加一个1行3列的表格, 表格样式为Table Grid
# 表格样式参数可选,缺省时为Normal Table
# Normal Table
# Table Grid
# Light Shading、 Light Shading Accent 1 至 Light Shading Accent 6
# Light List、Light List Accent 1 至 Light List Accent 6
# Light Grid、Light Grid Accent 1 至 Light Grid Accent 6
# 太多了其它省略...
table = document.add_table(rows=1, cols=3, style='Table Grid')# 填充标题行
hdr_cells = table.rows[0].cells
hdr_cells[0].text = '序号'
hdr_cells[1].text = '姓名'
hdr_cells[2].text = '描述'# 动态添加数据行
for id, name, desc in records:row_cells = table.add_row().cellsrow_cells[0].text = str(id)row_cells[1].text = namerow_cells[2].text = desc
document.add_paragraph('再添加一个表格')# 待添加到表格的内容
records2 = [["姓名", "性别", "家庭地址"],["貂蝉", "女", "河北省"],["杨贵妃", "女", "贵州省"],["西施", "女", "山东省"]
]# 添加一个4行3列的表格
table2 = document.add_table(rows=4, cols=3, style='Light List Accent 5')# 填充表格
for 行索引 in range(4):cells = table2.rows[行索引].cellsfor 列索引 in range(3):cells[列索引].text = str(records2[行索引][列索引])# 添加分页符
document.add_page_break()# 保存文档
document.save(r'D:\自动化\word\道德经.docx')

添加标题
level等级1-9 也就是标题1-标题9,我们可以在旧文档中将标题格式设置好,使用Python-docx打开旧文档,再添加相应等级标题即可。

document.add_heading('一级标题', level=1)

添加段落
段落在 Word 中是基本内容。它们用于正文文本,也用于标题和项目列表(如项目符号)。
添加段落的时候,赋值给一个变量,方便我们后面进行格式调整。

p = document.add_paragraph('道可道,非常道;名可名,非常名。')
# 添加指定格式段落 style后面则是样式
document.add_paragraph('以观其妙,', style='Intense Quote')

添加文字块
在指定段落上添加文字块。

p.add_run('无名,天地之始,').bold = True # 在指定段落后添加粗体文字
p.add_run('有名,') # 在指定段落后添加默认格式文字
p.add_run('万物之母。').italic = True # 在指定段落后添加斜体文字

添加图片
width, height可用于设置图片尺寸,缺省时为图片默认大小。

document.add_picture('girl.png')
document.add_picture('girl.png', width=Inches(1.25))
document.add_picture('girl.png', width=Cm(5), height=Cm(5))

# 添加一个4行3列的表格
table = document.add_table(rows=4, cols=3)
table = document.add_table(rows=4, cols=3, style='Light Shading Accent 2')

添加分页符

# 添加分页符
document.add page break()

读取Word
学习如何写入Word,我们继续学习下如何读取Word中的文字数据与表格数据。上代码:

from docx import Document
doc = Document(r'D:\自动化\word\道德经.docx')#读取word中所有内容for p in doc.paragraphs:print(p, p.text)# 读取指定段落中的所有run
for run in doc.paragraphs[1].runs:print(run, run.text)# 读取 word中所有表格内容
for 表格 in doc.tables:print(表格)for 行 in 表格.rows:for 单元格 in 行.cells:print(单元格.text)
doc.save(r'D:\自动化\word\另存为新文档.docx')

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C++ 计算日期到天数转换(牛客网)
  • 基于SpringBoot+Vue+MySQL的宠物寄养服务管理系统
  • Java throw和throws有什么区别?
  • 将工程内的组件 集成并发布到私有仓库以及后续联动运行(热启动)
  • Hibernate 批量插入速度慢的原因和解决方法
  • 六、Selenium操作指南(二)
  • JavaEE第19节 用UDP套接字实现简单回显服务器
  • JVM学习《类加载运行-jvm内存模型》
  • EXO:StandardNode _process_tensor
  • Node.js中的SQLite库:安装、对比与选择指南
  • Datawhale X 李宏毅苹果书 AI夏令营 进阶 Task2-自适应学习率+分类
  • 100423. 求出数字答案 显示英文描述
  • Makefile入门
  • java之浅拷贝、深拷贝
  • vscode和edge浏览器等鼠标输入光标变透明
  • @angular/forms 源码解析之双向绑定
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • 30天自制操作系统-2
  • Angular 4.x 动态创建组件
  • Angular 响应式表单 基础例子
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • js作用域和this的理解
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • node-glob通配符
  • PHP 小技巧
  • Shadow DOM 内部构造及如何构建独立组件
  • Spring Boot MyBatis配置多种数据库
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • windows-nginx-https-本地配置
  • 包装类对象
  • 电商搜索引擎的架构设计和性能优化
  • 马上搞懂 GeoJSON
  • 前端面试之闭包
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 时间复杂度与空间复杂度分析
  • -- 数据结构 顺序表 --Java
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 微信开放平台全网发布【失败】的几点排查方法
  • 我感觉这是史上最牛的防sql注入方法类
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • hi-nginx-1.3.4编译安装
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • ‌移动管家手机智能控制汽车系统
  • # 消息中间件 RocketMQ 高级功能和源码分析(七)
  • #define用法
  • #pragma 指令
  • #大学#套接字
  • (C11) 泛型表达式
  • (SERIES12)DM性能优化
  • (二)延时任务篇——通过redis的key监听,实现延迟任务实战
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (七)c52学习之旅-中断