win32com操作word API精讲 第六集 Range(四)对齐和缩进
本课程《win32com操作word API精讲&项目实战》同步在B站、今日头条、视频号及本公众号发布。其中本公众号以发布文字教程为主。
今天是大年初二,一灯在此祝愿各位朋友兔年吉祥,达成所想。
本节课主要讲解使用Range
操作段落格式中的对齐
和缩进
。
1.ParagraphFormat属性
对齐和缩进属于段落格式,Range
并不能直接操作段落格式(Paragraph(s)
就可以),不过所幸的是,Range
中封装了一个ParagraphFormat
的属性,它是一个独立接口,代表了段落的所有格式,通过它,则能实现Range
操作段落格式。
2.对齐和混合格式的坑
对齐的操作非常简单,示例如下:
from win32com.client import Dispatch
client = Dispatch('word.Application')
clinet.Visbile = 1
doc = client.Documents.Open(file_name)
# 假设打开的文档中有两端文字
rng1.Range(0,0)
rng1.MoveEnd(4,1)
rng1.ParagraphFormat.Alignment
>>>0
Alignment
用来返回或设置Range
对象所在段落的对齐情况,返回int
,其对照关系如下:
常量 | 对齐 |
---|---|
0 | 左对齐 |
1 | 居中对齐 |
2 | 右对齐 |
3 | 两端对齐 |
4 | 分散对齐 |
对齐的操作非常简单,但有个坑需要避开:混合格式
,我们模拟以下的情形。
对齐避坑指南
加速以上文档中两个段落的对齐都不一样,当我们使用doc.Range().ParagraphFormat.Alignment
来获取全文档的对齐时,会返回9999999
,这是因为两个段落的对齐不一样,也就是这里所说的混合格式
,这种情形不止存在于对齐中,还有字体、字号以及页面设置等资源都会有。
一般开发中,我们需要逐个资源进行处理,以避免掉进混合格式
的坑。
缩进
word编程接口中的缩进和客户端中设置面板的缩进选项是一一对应的,对齐的接口如下:
名称 | 接口 | 说明 |
---|---|---|
首行缩进/悬挂缩进 | CharacterUnitFirstLineIndent | 以字符为单位缩进 |
FirstLineIndent | 以磅值为单位缩进 | |
左缩进 | CharacterUnitLeftIndent | 以字符为单位缩进 |
LeftIndent | 以磅值为单位缩进 | |
右缩进 | CharacterUnitRightIndent | 以字符为单位缩进 |
RightIndent | 以磅值为单位缩进 |
首行缩进
和悬挂缩进
共用接口,它们两个的操作效果是相反的,所以在客户端中缩进设置面板中,它们两个处于一个下拉框中,如下图:
文本之前
对应着左缩进的接口,文本之后
对应着右缩进的接口。
同时,可以留意到,客户端提供了几个缩进的单位,这些单位最后都会被转换成磅值进行保存。在word编程的接口中,仅提供了两个单位的缩进接口,如上表中,带有CharacterUnit
字样的接口属于按字符
为单位进行缩进,反之按磅值
为单位进行缩进。
代码演示(接着上面的代码)
# 对第一个段落执行首行缩进2字符
rng1.ParagraphFormat.CharacterUnitFirstLineIndent = 2
# 等效的做法 一个字号磅值等于一个字符
rng1.ParagraphFormat.FirstLineIndent = 当前段落字号磅值 * 2
缩进避坑指南
磅值是所有缩进最终会保存的尺度单位,即无论使用字符设置还是厘米设置,最终会被计算成磅值保存到OLE对象中,这个保存的逻辑会引起一些小坑,当我们使用字符
设置缩进时,系统中计算、保存磅值的同时,也会记录字符
值,所以上述代码中,使用字符
设置了首行缩进,我们既能通过CharacterUnitFirstLineIndent
属性获取当前缩进的字符值
,也能通过FirstLineIndent
属性获取磅值
,但反之却不行。一图胜千字,请看下图。
所以,当我们要取消缩进时:
- 如果当前使用的是磅值缩进,只需要按照磅值缩进接口赋值为0即可
- 如果当前使用的是字符缩进,则需要先设置磅值缩进为0,再设置字符缩进为0方可取消。(因为这种情况它有两个缩进值,一为磅值,二为字符值)
暂时理解不了的话,自己敲一遍代码就能明白了。
悬挂缩进
悬挂缩进和首行缩进共用接口,前者使用负数
赋值,后者使用正数
赋值,这非常简单,伪代码演示即可。
# 悬挂缩进2字符
rng.ParagraphFormat.CharacterUnitFirstLineIndent = -2
至于左缩进和右缩进,使用方法、坑和首行缩进一模一样,请自行测试。
ok,本课内容就到这,下节课我们继续讲解Range
的其他属性方法。
有疑问,可私信也可评论区交流哈。
win32com操作word API精讲 第六集 Range(四)对齐和缩进的更多相关文章
- WKWebView API精讲(OC)
WKWebView API精讲(OC) 前言 鉴于LL同志对笔者说:“能不能写个OC版本的WKWebView的使用教程?”,还积极打赏了30RMB,笔者又怎么好意思拒绝呢,于是才有了下文. 所有看到本 ...
- win32com操作word(1):几个重要的对象(28.35)
Pywin32模块为python封装了操作windows底层API函数的功能.而win32com是Pywin32下面的一个模块,专门负责操作com组件. 由于office工具(Word.Excel等) ...
- win32com操作word(3):导入VBA常量
导入VBA常量方法:http://blog.sina.com.cn/s/blog_a73687bc0101k8x8.html 我们之前说过,win32com组件为python提供处理COM组件(.dl ...
- win32com操作word(2):常用用法
一.对象的位置关系: 1.Range属性位于(部分): Selection__Section__Cell__Paragraph__Table__Bookmark__Comment__Row__List ...
- 《修炼之道:.NET开发要点精讲》读书笔记(四)
委托的作用:1)它允许把方法作为参数,传递给其它的模块:2)它允许我们同时调用多个具有相同签名的方法:3)它允许我们异步调用任何方法. “方法签名”指方法的参数个数.参数类型以及返回值等,具有相同签名 ...
- 第三百六十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)基本的索引和文档CRUD操作、增、删、改、查
第三百六十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)基本的索引和文档CRUD操作.增.删.改.查 elasticsearch(搜索引擎)基本的索引 ...
- 第三百六十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索功能
第三百六十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索功能 Django实现搜索功能 1.在Django配置搜索结果页的路由映 ...
- 第三百六十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索的自动补全功能
第三百六十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—用Django实现搜索的自动补全功能 elasticsearch(搜索引擎)提供了自动补全接口 官方说明:https://www.e ...
- 第三百六十七节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)scrapy写入数据到elasticsearch中
第三百六十七节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)scrapy写入数据到elasticsearch中 前面我们讲到的elasticsearch( ...
- 第三百六十三节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的mget和bulk批量操作
第三百六十三节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的mget和bulk批量操作 注意:前面讲到的各种操作都是一次http请求操作一条数据,如果想 ...
随机推荐
- win10本地python第三方库安装成功,但是pycharm项目无法使用解决方案
一.背景win10本地python第三方库安装成功,但是pycharm项目无法使用解决方案如本地安装的python中的request库,在pycharm项目中居然无法使用,比较郁闷 pip list ...
- Seata 环境搭建
在使用微服务中,单体事务注解@Transactional 就不适用了,需要采用分布式事务解决方案,本文介绍分布式事务Seata的安装.Seata一款开源的分布式事务解决方案,致力于在微服务架构下提供高 ...
- Sublime Text4(Build 4126) 安装备忘
Sublime Text4(Build 4126) 安装备忘 sublime text 4126 PJ已测可用 打开浏览器进入网站https://hexed.it 打开sublime text4安装目 ...
- CC3
cc_link_three 0x00前言 这里要单独学cc链子三是因为它的调用方式不是执行命令而是代码执行,是一种动态类加载机制来执行代码,然后类加载的时候要用类加载器 0x01开整 首先明白调用机制 ...
- Pthread 并发编程(二)——自底向上深入理解线程
Pthread 并发编程(二)--自底向上深入理解线程 前言 在本篇文章当中主要给大家介绍线程最基本的组成元素,以及在 pthread 当中给我们提供的一些线程的基本机制,因为很多语言的线程机制就是建 ...
- Go语言核心36讲48
你真的很棒,已经跟着我一起从最开始初识Go语言,一步一步地走到了这里. 在这之前的几十篇文章中,我向你一点一点地介绍了很多Go语言的核心知识,以及一些最最基础的标准库代码包.我想,你已经完全有能力独立 ...
- VM安装Centos7操作系统
个人名片: 对人间的热爱与歌颂,可抵岁月冗长 Github:念舒_C.ying CSDN主页️:念舒_C.ying 个人博客 :念舒_C.ying 视频教程:https://live.csdn.ne ...
- kubernetes_CoreDNS全解析
一.前言 kubernetes CoreDNS 是 kube-system 命令空间里面的一个Pod,用于域名解析. kubernetes自带三个命名空间(用kubeadm安装的Kubernetes集 ...
- Kubernetes_从零开始搭建k8s集群(亲测可用)
一.前言 本文讲述从零开始搭建k8s集群,均使用国内镜像,版本均统一,使用两个虚拟机,一个主节点,一个从节点,保证k8s一次搭建成功. 注意:Kubernetes,简称K8s,是用8代替名字中间的8个 ...
- Linux中如何开启一个定时任务
Linux的定时任务是基于cron驱动做到的 安装 Ubantu系统下安装crontab 正常情况下需要先执行:apt-get upgrade 进行升级 安装:apt-get install cron ...