Python python-docx 使用教程
openpyxl是Python下的Word库,它能够很容易的对Word文档进行读取
- 安装方法:
pip install python-docx - 国内镜像安装:
pip install -i https://mirrors.aliyun.com/pypi/simple/ python-docx(推荐,安装更快) - 中文文档:https://www.osgeo.cn/python-docx/index.html#
- 文档、段落、文字块之间的关系:
- 一个Word文档(document)由若干个段落(paragraph)组成;
- 一个段落(paragraph)可以由若干个文字块(run)组成;

文档对象 - Document
- add_heading(text=‘’, level=1):添加标题
- add_paragraph(text=‘’, style=None):添加段落
- add_page_break():添加换页符
- add_table(rows, cols, style=None):添加表格
- add_picture(image_path_or_stream, width=None, height=None):添加图片
- paragraphs:获取文档内所有段落集合
- tables:获取文档内所有表格集合
- styles:获取文档内所有可用样式集合
- save(path_or_stream):保存文档
段落对象 - paragraph
- add_run(text=None, style=None):添加标题
- insert_paragraph_before(text=None, style=None):添加段落
- alignment:获取或设置段落对齐方式
- text:获取或设置段落文本
- runs:获取段落内所有文字块集合
- style:获取或设置段落样式
文字块对象 - run
- text:获取或设置文字块文本
- bold:获取或设置加粗
- italic:获取或设置倾斜
表格对象 - table
- add_row(text=None, style=None):添加行
- rows:获取所有行
- columns:获取所有列
- cell(row_idx, col_idx):根据行列索引获取指定单元格,其中(0,0)是最左上角的单元格
写入文件
from docx import Document
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.shared import Cm, RGBColor, Ptdoc = Document()
"""添加标题"""
para_head = doc.add_heading("正文一级标题",level=1) # level代表标题级别
para_head.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER # 标题居中
"""添加正文段落"""
p1 = doc.add_paragraph("我是正文第一段")
p1.text += ",第一段追加文本"
p2 = doc.add_paragraph("我是正文第二段")
p2.insert_paragraph_before("我在第二段之前")
# doc.add_page_break() # 添加分页符
"""添加带文字块的段落"""
p3 = doc.add_paragraph("我是带样式的段落——")
p3.add_run("加粗").bold = True
p3.add_run("倾斜").italic = True
p3.add_run("正常")
red_run = p3.add_run("20,加粗,红色")
red_run.font.size = Pt(20)
red_run.font.bold = True
red_run.font.color.rgb = RGBColor(255,0,0)
"""添加有序和无序列表"""
opts = ['选项1','选项2', '选项3']
for opt in opts: # 有序列表doc.add_paragraph(opt, style='List Number')
for opt in opts: # 无序列表doc.add_paragraph(opt, style='List Bullet')
"""添加表格"""
list1 = [["姓名","性别","家庭地址"],["唐僧","男","湖北省"],["孙悟空","男","北京市"],["猪八戒","男","广东省"]]
table = doc.add_table(rows=4,cols=3) # 创建指定行列的表格
for row_index in range(4):row_cells = table.rows[row_index].cellsfor cell_index in range(3):row_cells[cell_index].text = str(list1[row_index][cell_index])
row_cells = table.add_row().cells # 添加一行
row_cells[0].text = "沙和尚"
row_cells[1].text = "男"
row_cells[2].text = "湖南省"
"""添加图片"""
doc.add_picture(r"resource/python.png") # 默认大小
doc.add_picture(r"resource/word.png",width=Cm(5),height=Cm(5)) # 指定宽高
"""保存文档"""
doc.save(r"resource/Test.docx")

读取文件
获取段落
from docx import Document
path = r"resource/Test.docx"
"""获取段落"""
doc = Document(path) # 读取的doc可通过save方法保存
for paragraph in doc.paragraphs:print(paragraph.text,paragraph.style.name) # 段落text可修改,文字块、表格同样

获取文字块
from docx import Document
path = r"resource/Test.docx"
"""获取文字块"""
p5 = doc.paragraphs[4]
for run in p5.runs:print(run.text,run.bold,run.italic)

获取表格
from docx import Document
path = r"resource/Test.docx"
"""获取表格"""
table0 = doc.tables[0]
for row in table0.rows: # 获取表格所有行for cell in row.cells: # 获取表格行的所有单元格print(cell.text,end=" ")print()
print(table0.cell(2,0).text) # 根据行列索引获取指定单元格

获取图片
import os
from docx import Document
path = r"resource/Test.docx"
"""获取图片"""
for rel in doc.part.rels: # 获取所有part对象的id(rel→str,例如rId3)rel = doc.part.rels[rel] # 根据id获取文件对象if "image" in rel.target_ref: # 根据part对象的名称判断是否是图片(例如media/image1.jpeg)with open("resource/"+os.path.basename(rel.target_ref), "wb") as f:f.write(rel.target_part.blob) # 将图片以二进制格式写入
获取所有可用样式
for style in doc.styles:print(style)

相关文章:
Python python-docx 使用教程
openpyxl是Python下的Word库,它能够很容易的对Word文档进行读取 安装方法:pip install python-docx国内镜像安装:pip install -i https://mirrors.aliyun.com/pypi/simple/ python-docx(推荐,安装更快)中文…...
Mac上protobuf环境构建-java
参考文献 getting-started 官网pb java介绍 maven protobuf插件 简单入门1 简单入门2 1. protoc编译器下载安装 https://github.com/protocolbuffers/protobuf/releases?page10 放入.zshrc中配置环境变量 ~/IdeaProjects/test2/ protoc --version libprotoc 3.12.1 …...
CocosCreator3.8研究笔记(二十二)CocosCreator 动画系统-动画剪辑和动画组件介绍
国庆假期,闲着没事,在家研究技术~ 大家都知道在Cocos Creator3.x 的版本的动画编辑器中,可以实现不用写一行代码就能实现各种动态效果。 Cocos Creator动画编辑器中主要实现关键帧动画,不仅支持位移、旋转、缩放、帧动画ÿ…...
信看课堂-厘米GNSS定位
我们常常说GPS 定位,不过定位远不止GPS定位,通过本节课程,我们将会了解到,原来GPS只是定位的一种: GNSS概述 不同的GNSS系统使用不同的频段来传输导航信号。以下是一些主要的GNSS系统及其相应的频段,用表…...
2023CCPC网络赛(A E)
2023CCPC网络赛(A E) The 2nd Universal Cup. Stage 3: Binjiang - Dashboard - Contest - Universal Cup Judging System A. Almost Prefix Concatenation 思路:首先考虑如何求出每个位置允许失配一次的LCP长度 , 可以二分哈希求LCP , 即…...
使用 python 检测泛洪攻击的案例
使用 python 检测泛洪攻击的案例 本案例只使用python标准库通过执行命令来监控异常请求, 并封锁IP, 不涉及其他第三方库工具. import os import time from collections import Counter# 1、update 命令, 采集CPU的平均负载 def get_cpu_load():"""uptime 命令…...
SCROLLINFO scrollInfo; 2023/10/5 下午3:38:53
2023/10/5 下午3:38:53 SCROLLINFO scrollInfo;scrollInfo.cbSize = sizeof(SCROLLINFO);scrollInfo.fMask = SIF_ALL;//scrollInfo.nMin = 0; // 最小位置//scrollInfo.nMax = nRowCountToShow; // 最大位置//scrollInfo.nPage = nRowCountToShow; // 页面大小//scrollInf…...
Python--控制台获取输入与正则表达式
前言一、控制台获取输入1.1 字符串输入1.2 整数输入1.3 浮点数输入1.4 布尔值输入1.5 列表输入1.6 汇总 二、正则表达式2.1 匹配数字2.2 模式检查2.3 替换字符2.4 切分字符串2.5 搜索并提取匹配的部分2.6 使用捕获组提取匹配的部分2.7 非贪婪匹配2.8 忽略大小写匹配2.9 使用预定…...
网络基础知识面试题1
VC++常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/details/124272585C++软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...)...
JavaScript系列从入门到精通系列第十五篇:JavaScript中函数的实参介绍返回值介绍以及函数的立即执行
文章目录 一:函数的参数 1:形参如何定义 2:形参的使用规则 二:函数的返回值 1:函数返回值如何定义 2:函数返回值种类 三:实参的任意性 1:方法可以作为实参 2:将匿…...
js中的原型链
编写思路: 简单介绍构造函数介绍原型对象原型对象、实例的关系,从而引出原型链的基本概念 原型链基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法。 1. 什么是构造函数 构造函数本身跟普通函数一样,也不存在定义构造函数…...
一文搞懂APT攻击
APT攻击 1. 基本概念2. APT的攻击阶段3. APT的典型案例参考 1. 基本概念 高级持续性威胁(APT,Advanced Persistent Threat),又叫高级长期威胁,是一种复杂的、持续的网络攻击,包含高级、长期、威胁三个要素…...
在pandas中通过一列数据映射出另一列的几种思路和方法
如果一句话中出现某个品牌的关键词,那么就将该品牌进行提取,开始我的做法是写了很多elif,如下: def brand_describe(x):if TRUM in x.upper():return "通快"elif BYSTRONIC in x.upper():return "百超"elif …...
数据分析视角中的商业分析学习笔记
数据分析一大堆,结果却是大家早就知道的结论?是工具和方法出问题了吗?真正原因可能是你的思维有误区。 为什么分析的这么辛苦,得出的结论大家早知道,谁谁都不满意?核心原因有3个: 分析之前&am…...
剑指offer——JZ26 树的子结构 解题思路与具体代码【C++】
一、题目描述与要求 树的子结构_牛客题霸_牛客网 (nowcoder.com) 题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(我们约定空树不是任意一个树的子结构) 假如给定A为{8,8,7,9,2,#,#,#,#,4,7},B为{8,9,2}&…...
NEFU数字图像处理(1)绪论
一、简介 1.1什么是数字图像 图像是三维场景在二维平面上的影像。根据其存储方式和表现形式,可以将图像分为模拟图像和数字图像两大类 图像处理方法:光学方法、电子学方法 模拟图像:连续的图像数字图像:通过对时间上和数值上连续…...
数值分析学习笔记——绪论【华科B站教程版本】
绪论 数值分析概念 用计算机求解数学问题的数值方法和理论 三大科学研究方法 实验理论分析科学计算(用计算机去辅助研究):数值方法计算机 解析解和近似解 解析解:使用数学方法求出或推导出的结果,往往可以求解出…...
节日灯饰灯串灯出口欧洲CE认证办理
灯串(灯带),这个产品的形状就象一根带子一样,再加上产品的主要原件就是LED,因此叫做灯串或者灯带。2022年,我国灯具及相关配件产品出口总额超过460亿美元。其中北美是最大的出口市场。其次是欧洲市场&#…...
一线大厂Redis高并发缓存架构实战与性能优化
文章目录 一、redis主从架构锁失效问题分析二、从CAP角度剖析redis与zookeeper分布式锁区别三、redlock分布式锁原理与存在的问题分析四、大促场景如何将分布式锁性能提升100倍五、高并发redis架构代码实战 一、redis主从架构锁失效问题分析 我们都知道,一般的互联…...
PHP 行事准则:allow_url_fopen 与 allow_url_include
文章目录 参考环境allow_url_fopenallow_url_fopen 配置项操作远程文件file 协议 allow_url_includeallow_url_include 配置项 allow_url_include 与 allow_url_fopen区别联系默认配置配置项关闭所导致异常运行时配置ini_set()限制 参考 项目描述搜索引擎Bing、GoogleAI 大模型…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果基础
第三周 Day 3 🎯 今日目标 理解类(class)和对象(object)的关系学会定义类的属性、方法和构造函数(init)掌握对象的创建与使用初识封装、继承和多态的基本概念(预告) &a…...
【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...
GeoServer发布PostgreSQL图层后WFS查询无主键字段
在使用 GeoServer(版本 2.22.2) 发布 PostgreSQL(PostGIS)中的表为地图服务时,常常会遇到一个小问题: WFS 查询中,主键字段(如 id)莫名其妙地消失了! 即使你在…...
ABAP设计模式之---“Tell, Don’t Ask原则”
“Tell, Don’t Ask”是一种重要的面向对象编程设计原则,它强调的是对象之间如何有效地交流和协作。 1. 什么是 Tell, Don’t Ask 原则? 这个原则的核心思想是: “告诉一个对象该做什么,而不是询问一个对象的状态再对它作出决策。…...
Ansible+Zabbix-agent2快速实现对多主机监控
ansible Ansible 是一款开源的自动化工具,用于配置管理(Configuration Management)、应用部署(Application Deployment)、任务自动化(Task Automation)和编排(Orchestration…...
