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

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动画编辑器中主要实现关键帧动画,不仅支持位移、旋转、缩放、帧动画&#xff…...

信看课堂-厘米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 大模型…...

Agent 帮不了你,不是因为它不够聪明

上一篇我们分析了 CLI vs MCP 的争论本质上是在讨论"管道",而真正缺的是"水龙头"。这篇继续往下挖:就算水龙头开了,你也大概率接不上。Agent 在现实中寸步难行的原因,比大多数人想的更结构化。 一个常见的许诺…...

WeKnora在客服场景的应用:让新员工秒变产品专家

WeKnora在客服场景的应用:让新员工秒变产品专家 1. 客服行业的痛点与挑战 客服团队每天面临的核心挑战是如何快速准确地回答客户问题。特别是在以下场景中: 新产品上线:产品功能复杂,客服人员需要快速掌握数十页技术文档季节性…...

VS Code + Flask新手避坑指南:从虚拟环境配置到第一个Hello World页面

VS Code Flask新手避坑指南:从虚拟环境配置到第一个Hello World页面 刚接触Flask框架的开发者常会遇到各种环境配置问题——虚拟环境切换失败、包导入报错、路由访问404……这些看似简单的坑往往让人耗费数小时。本文将用最小可行方案带你在VS Code中快速搭建Flas…...

告别复杂配置!Qwen-Image-2512-SDNQ一键部署,打造专属AI绘画网站

告别复杂配置!Qwen-Image-2512-SDNQ一键部署,打造专属AI绘画网站 1. 为什么选择Qwen-Image-2512-SDNQ镜像? 在AI绘画领域,模型部署往往意味着复杂的配置和环境搭建。Qwen-Image-2512-SDNQ-uint4-svd-r32镜像彻底改变了这一现状&…...

实测:用GPT-4和KernelBench自动生成CUDA内核,效果到底如何?

实测:GPT-4与KernelBench自动生成CUDA内核的实战效果分析 当我在深夜调试一个矩阵乘法的CUDA内核时,第17次尝试依然无法突破PyTorch原生实现的性能。这种场景对GPU开发者来说再熟悉不过——我们总在手工优化与开发效率之间寻找平衡。而当我第一次听说可以…...

RMBG-2.0图文实战手册:发丝/毛边/半透明物体精准抠图案例集

RMBG-2.0图文实战手册:发丝/毛边/半透明物体精准抠图案例集 1. 开篇:当抠图遇上AI魔法 你有没有遇到过这样的烦恼?想给产品拍张美美的白底图,结果边缘总是毛毛糙糙;想给人物换个背景,头发丝却和原背景难舍…...

革新性硬件控制工具:OmenSuperHub实现游戏本性能优化与完全掌控

革新性硬件控制工具:OmenSuperHub实现游戏本性能优化与完全掌控 【免费下载链接】OmenSuperHub 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub OmenSuperHub是一款专为惠普暗影精灵系列游戏本设计的开源硬件控制工具,提供完全离线的…...

ThreadLocal内存泄漏警告!多线程MDC使用必须知道的3个避坑点

ThreadLocal内存泄漏实战:多线程MDC避坑指南与深度解决方案 当你在凌晨三点被报警电话惊醒,发现生产环境因为内存溢出而崩溃时,排查结果指向一个看似无害的MDC日志组件——这种场景在过去两年里我已经经历了三次。ThreadLocal作为MDC的底层实…...

丹青识画系统Prompt工程指南:如何用文本描述引导更精准的风格鉴定

丹青识画系统Prompt工程指南:如何用文本描述引导更精准的风格鉴定 丹青识画这类AI系统,很多人以为它就是个“看图说话”的工具,把图片丢进去,它告诉你这是什么风格、哪个流派。这确实没错,但如果你只这么用&#xff0…...

XUnity.AutoTranslator:Unity游戏翻译解决方案的创新方法 | 玩家与开发者实战指南

XUnity.AutoTranslator:Unity游戏翻译解决方案的创新方法 | 玩家与开发者实战指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾因语言障碍错失优秀的外语游戏?是否在尝…...