python使用python-docx处理word

news/2024/12/5 3:06:59/

文章目录

  • 一、python-docx简介
  • 二、基本使用
    • 1、新建与保存word
    • 2、写入Word
      • (1)打开文档
      • (2)添加标题
      • (3)添加段落
      • (4)添加文字块
      • (5)添加图片
      • (6)添加表格
      • (7)添加分页符
    • 3、读取word

pythondocx_1">一、python-docx简介

python自动化操作Word最常用的模块就是python-docx。

python-docx模块处理word文档,处理方式是面向对象的。也就是说python-docx模块会把word文档,文档中的段落、文本、字体等都看做对象,对对象进行处理就是对word文档的内容处理。

如果需要读取word文档中的文字(一般来说,程序也只需要认识word文档中的文字信息),需要先了解python-docx模块的几个概念。
Word文档一般可以结构化成三个部分:
Document,表示一个word文档
Paragraph,表示word文档中的一个段落
Run,表示段落中的文字块
在这里插入图片描述
Document - Paragraph - Run三级结构,这是最普遍的情况。但是如果Word中存在表格,这时会有新的文档结构,如下:
在这里插入图片描述
这时的结构非常类似Excel, 可以看成Document-Table-Row/Column-Cells四级结构。

# 安装
pip install python-docx

二、基本使用

word_22">1、新建与保存word

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

2、写入Word

word">from docx word">import Document # 导入docx库
word">from docx.shared word">import Inches, Cm # 导入英寸单位 厘米Cm (可用于指定图片大小、表格宽高等)# 打开一个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='ListNumber')
document.add_paragraph('所以说,霸夫老师教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 = '描述'# 动态添加数据行
word">for id, name, desc word">in records:row_cells = table.add_row().cellsrow_cells[0].text = str(id)row_cells[1].text = namerow_cells[2].text = descdocument.add_paragraph('再添加一个表格')
# 待添加到表格的内容
records2 = [["姓名", "性别", "家庭地址"],["貂蝉", "女", "河北省"],["杨贵妃", "女", "贵州省"],["西施", "女", "山东省"]
]# 添加一个4行3列的表格
table2 = document.add_table(rows=4, cols=3, style='Light List Accent 5')# 填充表格
word">for 行索引 word">in range(4):cells = table2.rows[行索引].cellsword">for 列索引 word">in range(3):cells[列索引].text = str(records2[行索引][列索引])
# 添加分页符
document.add_page_break()
# 保存文档
document.save(file_path)

(1)打开文档

Document()传入参数是打开相应的文档,不传参数则是创建一个空文档。

# 创建一个空文档
document = Document()
# 加载旧文档(用于修改或添加内容)
document = Document('exist.docx')

(2)添加标题

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

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

(3)添加段落

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

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

(4)添加文字块

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

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

(5)添加图片

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))

(6)添加表格

表格样式style参数可选,缺省时默认为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

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

(7)添加分页符

# 添加分页符
document.add_page_break()

word_172">3、读取word

'''
文档.paragraphs可以获取文档中所有段落数据,不包含表格,这里注意一点图片跟分页符也会计算在段落数据内
段落.runs 可以获取段落的所有文字块
文档.tables可以获取文档中所有表格数据
文档.save (path) 可以用于保存修改后的文档本身,同样也可在将打开的文档另存为新文档
'''
word">from docx word">import Document
doc = Document(r'D:\自动化\word\道德经.docx')# 读取 word 中所有内容
word">for p word">in doc.paragraphs:word">print(p, p.text)# 读取指定段落中的所有run
word">for run word">in doc.paragraphs[1].runs:word">print(run, run.text)# 读取 word中所有表格内容
word">for 表格 word">in doc.tables:word">print(表格)word">forword">in 表格.rows:word">for 单元格 word">in.cells:word">print(单元格.text)doc.save(r'D:\自动化\word\另存为新文档.docx')


http://www.ppmy.cn/news/1552451.html

相关文章

蓝桥杯真题——砍竹子(C语言)

问题描述 这天, 小明在砍竹子, 他面前有 n 棵竹子排成一排, 一开始第 ii 棵竹子的 高度为 ​.他觉得一棵一棵砍太慢了, 决定使用魔法来砍竹子。魔法可以对连续的一 段相同高度的竹子使用, 假设这一段竹子的高度为 H, 那么用一次魔法可以,把这一段竹子的高度都变为, 其中 [x]表…

爬虫抓取的数据能用于商业分析吗?

引言 在数字化时代,数据已成为企业获取竞争优势的关键资源。网络爬虫作为一种数据收集工具,能够从互联网上抓取大量数据,这些数据在商业分析中扮演着重要角色。然而,使用爬虫技术获取的数据是否合法、能否用于商业分析&#xff0…

大数据新视界 -- 大数据大厂之 Hive 数据质量保障:数据清洗与验证的策略(上)(17/ 30)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

【青牛科技】超低功耗混合信号处理器由多种设备组成的流量计电路芯片——D8331

概述: D8331 系列超低功耗混合信号处理器由多种设备组成,具有针对电能表应用的不同外围设备。它们集成了模拟前端和固定功能 DSP 解决方案与一个增强型 8052 单片机核心,RTC 和 LCD 驱动程序集成在一个单一部件中。测量内核包括有功、无功、视…

Indira英迪拉AI量化平台加速全球扩展,启动个人投资者业务并布局亚太市场

Indira英迪拉AI量化平台宣布,正在积极筹备启动全球个人投资者业务,并致力于拓展亚太地区市场,推动业务增长与国际化发展。作为一家创新平台,Indira英迪拉凭借前沿的人工智能技术,正在革新全球金融投资模式,…

经典C语言代码——part 19(链表)

【程序72】 题目:创建一个链表。 1.程序分析:            2.程序源代码: /*creat a list*/ #include "stdlib.h" #include "stdio.h" struct list { int data; struct list *next; }; typedef str…

SQL Server第四章-数据的查询(二)(头歌)答案代码

第1关:通配符%的使用 USE Mall GoSET NOCOUNT ON---------- retrieving with wildcard % ---------- -- ********** Begin ********** -- select * from Products where prod_name like %toy%-- ********** End ********** --GO 第2关:通配符_的使用 …

MySQL高可用之组复制(MGR)

华子目录 组复制的特点组复制的工作原理单主模式和多主模式单主多主 实现mysql的多主模式的组复制测试 组复制的特点 MySQL Group Replication(简称 MGR )是MySQL官方于2016 年12月推出的一个全新的高可用与高扩展的解决方案组复制是MySQL 5.7.17版本出现的新特性,…