当前位置: 首页 > 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 大模型…...

Replicate + ngrok云端大模型API实现教程

ChatGPT 的诞生预示着人工智能和机器学习领域的新时代。 日新月异,Hugging Face 不断推出突破性的语言模型,重新定义人机交互的界限。欢迎来到未来! 当然,有很多选项可以对它们进行推断。在本文中,我将告诉大家如何使…...

蓝桥等考Python组别十四级005

蓝桥等考Python组别十四级 第一部分:选择题 1、Python L14 (15分) 运行下面程序,输出的结果是( )。 d = {1 : one, 2 : two, 3 : three, 4 : four} print(d[2]) onetwothreefour正确答案:B...

Linux 本地 Docker Registry本地镜像仓库远程连接

Linux 本地 Docker Registry本地镜像仓库远程连接 Docker Registry 本地镜像仓库,简单几步结合cpolar内网穿透工具实现远程pull or push (拉取和推送)镜像,不受本地局域网限制! 1. 部署Docker Registry 使用官网安装方式,docker命令一键启动,该命令启动一个regis…...

二十九、高级IO与多路转接之epollreactor(收官!)

文章目录 一、Poll(一)定义(二)实现原理(三)优点(四)缺点 二、I/O多路转接之epoll(一)从网卡接收数据说起(二)如何知道接收了数据&…...

vite dev开发模式下支持外部模块引用

web工程中经常需要使用外部的cdn资源&#xff0c;比如lodash、three.js等&#xff1a; <script type"importmap">{"imports": {"lodash": "https://unpkg.com/lodash-es4.17.21/lodash.js"}} </script> vite build通过r…...

Chrome出现STATUS_STACK_BUFFER_OVERRUN解决方法之一

Chrome出现STATUS_STACK_BUFFER_OVERRUN错误代码&#xff0c;setting都无法打开 解决方法1&#xff1a;兼容性设置为win7 解决方法2&#xff1a; 1&#xff0c;开始菜单搜索Exploit Protection 2&#xff0c;添加程序进行自定义&#xff0c;点号&#xff0c;按程序名称添加 …...

【JavaEE】JavaScript

JavaScript 文章目录 JavaScript组成书写方式行内式内嵌式外部式&#xff08;推荐写法&#xff09; 输入输出变量创建动态类型基本数据类型数字类型特殊数字值 String转义字符求长度字符串拼接布尔类型undefined未定义数据类型null 运算符条件语句if语句三元表达式switch 循环语…...

剑指offer——JZ7 重建二叉树 解题思路与具体代码【C++】

一、题目描述与要求 重建二叉树_牛客题霸_牛客网 (nowcoder.com) 题目描述 给定节点数为 n 的二叉树的前序遍历和中序遍历结果&#xff0c;请重建出该二叉树并返回它的头结点。 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6}&#xff0c;则重建出…...

图片批量编辑器,轻松拼接多张图片,创意无限!

你是否曾经遇到这样的问题&#xff1a;需要将多张图片拼接成一张完整的画面&#xff0c;却缺乏专业的图片编辑技能&#xff1f;现在&#xff0c;我们为你带来一款强大的图片批量编辑器——让你轻松实现多张图片拼接&#xff0c;创意无限&#xff01; 这款图片批量编辑器可以帮助…...

蓝桥等考Python组别十四级008

第一部分:选择题 1、Python L14 (15分) 运行下面程序,输出的结果是( )。 d = {1: "red", 2: "yellow", 3: "blue", 4: "green"} print(d[2]) redyellowbluegreen正确答案:B 2、Python L14 (...

做网站怎么弄模板/谷歌seo排名技巧

Pagination 为什么要分页也不用多说了&#xff0c;大家都懂&#xff0c;DRF也自带了分页组件 这次用 前后端分离djangorestframework——序列化与反序列化数据 文章里用到的数据&#xff0c;数据库用的mysql&#xff0c;因为django自带的sqlite对于日期类型的数据会自动转成时…...

wordpress页脚设计/视频号推广

版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接和本声明。 本文链接&#xff1a;https://blog.csdn.net/wdnq1022/article/details/72862367 随着主机、磁盘、网络等技术的发展&#xff0c;数据存储的方式…...

哪个网站做餐饮推广最好/百度信息流开户多少钱

转载于:https://www.cnblogs.com/bilibiliganbei/p/5236293.html...

网络工程有哪些/关键词优化教程

对话框不是模式就是无模式的。模式对话框&#xff0c;在可以继续操作应用程序的其他部分之前&#xff0c;必须被关闭&#xff08;隐藏或卸载&#xff09;。例如&#xff0c;如果一个对话框&#xff0c;在可以切换到其它窗 体或对话框之前要求先单击“确定”或“取消”&#xff…...

酒店做爰视频网站/腾讯云域名注册官网

我的开发环境:eclipse kepler (4.3)tomcat7.0.42.在我想看eclipse中web项目jsp文件被tomcat转换成java以后的java源文件的位置。发现正常情况下的webapps以下。没有看到我部署的项目同一时候&#xff0c;work文件夹(jsp的工作文件夹)以下也没有生成相关的jsp的class文件和java源…...

做亚马逊有哪些网站可以清货/seo的内容主要有哪些方面

1、找比自己大5&#xff5e;15年的人占卜&#xff1b;不是要复制他的经历&#xff0c;而是超越他的经历。我发现自己一生最容易犯的错误就是尝试在达到一个高度前&#xff0c;超越这个高度。 因此要向任何过来人请教&#xff0c;学习他们的经验&#xff0c;避免他们的错误。 2、…...