本课程《win32com操作word API精讲&项目实战》以视频为主,文字为辅,公众号ID:一灯编程

在word编程中,RangeParagraph(s)接口无愧于劳模接口的称谓。大部分的接口都将Range封装成了属性,如页眉页脚、页面设置、正文内容、批注、图片、表格、公式、图形等等,有了Range属性,方便我们使用Range的方法和属性去操作它们。

Paragraphs(s)概述

Paragraphs接口能做什么

Paragraphs表示段落对象的集合,有三个接口有Paragraphs属性,分别为RangeSelectionDocument,这些接口的实例对象使用该属性就能获得各自范围内的全部段落了。下面为伪代码演示:

from win32com.client import Dispatch

client = Dispatch('word.Application')
client.Visible = 1 doc = client.Documents.Open('demo.doc') # 统计Selection中有多少个段落
s = client.Selection
s.Start = 0
s.End = 10
print(s.Paragraphs.Count)
>>>1 # 统计Range中有多少个段落
rng = doc.Range(0,2)
print(rng.Paragraphs.Count)
>>>1 # 统计整个文档中有多少个段落
print(doc.Paragraphs.Count)
>>>8

Paragraphs和Paragrap有什么关系

复数表示所有段落,是一个集合,单数表示单个段落对象。Paragraph也是一个独立的接口,两者大部分都属性和方法都是共用的。下面伪代码演示了,如何通过Paragraphs获得某个Paragraph对象。

from win32com.client import Dispatch

client = Dispatch('word.Application')
client.Visible = 1 doc = client.Documents.Open('demo.doc') # 谋取某个段落 以第一段举例
p1 = doc.Paragraphs(1)
p1 = doc.Paragraphs.Item(1)
p1 = doc.Paragraphs.First
p1 = doc.Paragraphs[0]

两者之间最明显的区别是,ParagraphRange属性,我们可以很方便地将某个段落转换成Range属性从而使用Range的属性和方法来操作该段落,而Paragraphs并没有。

word编程中段落是什么

在word编程中,但凡带有\r段落标记的都是段落,不仅仅文本的结束才会有段落标记,图片、表格、公式等资源,只要处于末尾,都会以段落标记结束。假若我已经打开了下方的文档,并通过接口获取第二段:

from win32com.client import Dispatch

client = Dispatch('word.Application')
client.Visible = 1 doc = client.Documents.Open('demo.doc') print(doc.Paragraphs(2))
>>>'\r'

看起来第二段并无内容,但实际上它包含一个段落标记,段落标记也是段落内容,尤其在做文本比较的时候切勿忘记这点。同时,我们在使用Count属性统计段落数量时,如果文档中包含空段落的话,那么空段落一定被统计进来。

特殊情况:一个单元格也会被统计成一个段落,切记。

接口之间的相互转换

实际开发中,有不少接口之间是可以相互转换的,这极大地方便了我们的操作,如:

  • Range可以转换成Paragraphs
  • Paragraph从Paragraphs中获得
  • Paragraph可以转换成Range

这些转换都是通过使用属性完成的,如ParagraphRange属性会返回一个Range对象,意味着该段落也可以使用Range的属性和方法,RangeParagraphs属性会返回一个Paragraphs对象,意味着该范围也可以使用Paragraphs的属性和方法来。

这种转换非常方便,有不少的接口都有Range属性。

ok,今天的内容就先到这,下节课我们接着讲。有问题请留言、私信。

win32com操作word API精讲 第十集 Paragraphs & Paragraph接口 (一)的更多相关文章

  1. WKWebView API精讲(OC)

    WKWebView API精讲(OC) 前言 鉴于LL同志对笔者说:“能不能写个OC版本的WKWebView的使用教程?”,还积极打赏了30RMB,笔者又怎么好意思拒绝呢,于是才有了下文. 所有看到本 ...

  2. win32com操作word(1):几个重要的对象(28.35)

    Pywin32模块为python封装了操作windows底层API函数的功能.而win32com是Pywin32下面的一个模块,专门负责操作com组件. 由于office工具(Word.Excel等) ...

  3. win32com操作word(3):导入VBA常量

    导入VBA常量方法:http://blog.sina.com.cn/s/blog_a73687bc0101k8x8.html 我们之前说过,win32com组件为python提供处理COM组件(.dl ...

  4. win32com操作word(2):常用用法

    一.对象的位置关系: 1.Range属性位于(部分): Selection__Section__Cell__Paragraph__Table__Bookmark__Comment__Row__List ...

  5. Java文件操作系列[3]——使用jacob操作word文档

    Java对word文档的操作需要通过第三方组件实现,例如jacob.iText.POI和java2word等.jacob组件的功能最强大,可以操作word,Excel等格式的文件.该组件调用的的是操作 ...

  6. 第三百五十节,Python分布式爬虫打造搜索引擎Scrapy精讲—selenium模块是一个python操作浏览器软件的一个模块,可以实现js动态网页请求

    第三百五十节,Python分布式爬虫打造搜索引擎Scrapy精讲—selenium模块是一个python操作浏览器软件的一个模块,可以实现js动态网页请求 selenium模块 selenium模块为 ...

  7. 第三百七十节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索结果分页

    第三百七十节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索结果分页 逻辑处理函数 计算搜索耗时 在开始搜索前:start_time ...

  8. 第三百六十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索功能

    第三百六十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索功能 Django实现搜索功能 1.在Django配置搜索结果页的路由映 ...

  9. 第三百六十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索的自动补全功能

    第三百六十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—用Django实现搜索的自动补全功能 elasticsearch(搜索引擎)提供了自动补全接口 官方说明:https://www.e ...

  10. 第三百六十三节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的mget和bulk批量操作

    第三百六十三节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的mget和bulk批量操作 注意:前面讲到的各种操作都是一次http请求操作一条数据,如果想 ...

随机推荐

  1. 【深入浅出 Yarn 架构与实现】1-2 搭建 Hadoop 源码阅读环境

    本文将介绍如何使用 idea 搭建 Hadoop 源码阅读环境.(默认已安装好 Java.Maven 环境) 一.搭建源码阅读环境 一)idea 导入 hadoop 工程 从 github 上拉取代码 ...

  2. 要写文档了,emmm,先写个文档工具吧——DocMarkdown

    前言 之前想用Markdown来写框架文档,找来找去发现还是Jekyll的多,但又感觉不是很合我的需求 于是打算自己简单弄一个展示Markdown文档的网站工具,要支持多版本.多语言.导航.页内导航等 ...

  3. zk,kafka,redis哨兵,mysql容器化

    1. zookeeper,kafka容器化 1.1 zookeeper+kafka单机docker模式 docker pull bitnami/zookeeper:3.6.3-debian-11-r4 ...

  4. windows安装wsl,在windows中使用ubuntu

    WSL(Windows Subsystem for Linux)即适用于 Linux 的 Windows 子系统,它是随 Windows 操作系统一起提供. WSL是windows操作系统的子系统,算 ...

  5. 两行CSS让页面提升了近7倍渲染性能!

    前言 对于前端人员来讲,最令人头疼的应该就是页面性能了,当用户在访问一个页面时,总是希望它能够快速呈现在眼前并且是可交互状态.如果页面加载过慢,你的用户很可能会因此离你而去.所以页面性能对于前端开发者 ...

  6. vue 中使用 this 更新数据的一次大坑

    情景说明: 之前用 vue 做数据绑定更新时,发现一个莫名奇妙的问题. 我在 vue 实例中声明了一个数组属性如 books: [],在异步请求的回调函数中使用 this.books = res.da ...

  7. 算法5: LeetCode_单链表_两数相加

    题目: * 给你两个 非空 的链表,表示两个非负的整数.它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字. * 请你将两个数相加,并以相同形式返回一个表示和的链表. * 你可 ...

  8. 轻松玩转sed

    sed处理文本方法 1.文本或管道输入 2.读入一行到模式控件 3.sed命令处理 4.输出到屏幕 所以 sed是一个流处理编辑器 sed一次处理一行内容 sed不改变文件内容(可以通过重定向改变文件 ...

  9. GitHub上的一个笔记相关小项目

    就是一个笔记屑小项目, C++编写,有想一起开发的私信 AlgorithWeaver/V-note (github.com) 项目名V-note QVQ

  10. 【大数据课程】高途课程实践-Day03:Scala实现商品实时销售统计

    〇.概述 1.实现内容 使用Scala编写代码,通过Flink的Source.Sink以及时间语义实现实时销量展示 2.过程 (1)导包并下载依赖 (2)创建数据源数据表并写⼊数据 (3)在Mysql ...