百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Python自动化办公应用学习笔记47—Word文档自动化处理3

zhezhongyun 2025-09-01 19:14 26 浏览

五、格式设置与样式控制

1.字体格式设置

paragraph = doc.add_paragraph()

run = paragraph.add_run('格式设置示例:')


# 添加中文文本

chinese_run = paragraph.add_run('中文字体')

chinese_run.font.name = '宋体'


chinese_run._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')


# 添加英文文本

english_run = paragraph.add_run(' English Text')

english_run.font.name = 'Times New Roman'


# 设置字体属性

run = paragraph.add_run(' 加粗斜体下划线')

run.bold = True

run.italic = True

run.underline = True

run.font.size = Pt(14)

run.font.color.rgb = RGBColor(0, 0, 255) # 蓝色

2.段落格式设置

from docx.enum.text import WD_ALIGN_PARAGRAPH


paragraph = doc.add_paragraph('段落格式设置示例')


# 对齐方式

paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER # 居中


# 段落格式

format = paragraph.paragraph_format

format.left_indent = Cm(1) # 左缩进1厘米

format.right_indent = Cm(0.5) # 右缩进0.5厘米

format.first_line_indent = Cm(0.5) # 首行缩进0.5厘米

format.space_before = Pt(12) # 段前间距12磅

format.space_after = Pt(6) # 段后间距6磅

format.line_spacing = 1.5 # 1.5倍行距

功能

方法

参数说明

创建、保存文档

Document(), save()

创建、保存文档对象

标题

add_heading(text, level)

level=0(最高级)到level=5

段落

add_paragraph(text)

插入普通文本段落

字体样式

Run对象

的属性

bold/italic/font.size等

列表

style='List Bullet'或List Number

无序列表/有序列表

图片

add_picture(path, width, height)

需指定尺寸(英寸或厘米)

表格操作

add_table() + cell.text

通过rows和cells填充数据

读取内容

Document('file.docx')

遍历paragraphs和tables属性

格式转换

doc.SaveAs(..., 12)

.doc转.docx

注意事项:

1.操作前备份文档,防止意外修改。

2.处理.doc文件需依赖Windows系统+MS Word。

3.中文字体需额外设置w:eastAsia属性。

4.批量操作时注意文件名冲突和内存管理。

5.表格合并时注意样式冲突。

6.性能优化:批量操作避免频繁打开/关闭Word进程、大文档处理时逐段读取避免内存溢出。

3.页面布局设置

通过章节对象的 left_margin、top_margin、right_margin、bottom_margin 属性值可以获取当前章节的左边距、上边距、右边距、下边距。页眉边距:header_distance,页脚边距:footer_distance,页面宽度:page_width,页面高度:page_height。

section = doc.sections[0]


# 纸张大小 (A4)

section.page_width = Cm(21)

section.page_height = Cm(29.7)


# 页面方向

section.orientation = WD_ORIENT.LANDSCAPE # 横向


# 页边距

section.top_margin = Cm(2.5)

section.bottom_margin = Cm(2.5)

section.left_margin = Cm(3)

section.right_margin = Cm(3)


# 装订线

section.gutter = Cm(1)

功能

方法/属性

说明

基础页眉/页脚

section.header/footer.paragraphs[0].text

设置内容

奇偶页不同

doc.settings.odd_and_even_pages_header_footer = True

需先启用

首页不同

section.different_first_page_header_footer = True

需先启用

页眉距离

section.header_distance = Cm(值)

默认1.27cm

取消链接上一节

header.is_linked_to_previous = False

分节独立设置关键

批量替换

Find.Execute() (win32com)

遍历所有节和Header/Footer对象

纸张大小

section.page_width/page_height

单位Cm或Inches

页边距

section.top_margin等

上下左右边距独立设置

注意事项:

优先级:首页设置 > 奇偶页设置 > 普通页设置。

分节处理:多节文档需遍历所有节并取消链接(is_linked_to_previous=False)才能独立设置。

跨平台:win32com仅限Windows系统,需安装pypiwin32库。

单位转换:使用Cm()或Inches()确保尺寸准确(需导入from docx.shared import Cm)。

相关推荐

perl基础——循环控制_principle循环

在编程中,我们往往需要进行不同情况的判断,选择,重复操作。这些时候我们需要对简单语句来添加循环控制变量或者命令。if/unless我们需要在满足特定条件下再执行的语句,可以通过if/unle...

CHAPTER 2 The Antechamber of M de Treville 第二章 特雷维尔先生的前厅

CHAPTER1TheThreePresentsofD'ArtagnantheElderCHAPTER2TheAntechamber...

CHAPTER 5 The King'S Musketeers and the Cardinal'S Guards 第五章 国王的火枪手和红衣主教的卫士

CHAPTER3TheAudienceCHAPTER5TheKing'SMusketeersandtheCardinal'SGuard...

CHAPTER 3 The Audience 第三章 接见

CHAPTER3TheAudienceCHAPTER3TheAudience第三章接见M.DeTrévillewasatt...

别搞印象流!数据说明谁才是外线防守第一人!

来源:Reddit译者:@assholeeric编辑:伯伦WhoarethebestperimeterdefendersintheNBA?Here'sagraphofStea...

V-Day commemorations prove anti-China claims hollow

People'sLiberationArmyhonorguardstakepartinthemilitaryparademarkingthe80thanniversary...

EasyPoi使用_easypoi api

EasyPoi的主要特点:1.设计精巧,使用简单2.接口丰富,扩展简单3.默认值多,writelessdomore4.springmvc支持,web导出可以简单明了使用1.easypoi...

关于Oracle数据库12c 新特性总结_oracle数据库12514

概述今天主要简单介绍一下Oracle12c的一些新特性,仅供参考。参考:http://docs.oracle.com/database/121/NEWFT/chapter12102.htm#NEWFT...

【开发者成长】JAVA 线上故障排查完整套路!

线上故障主要会包括CPU、磁盘、内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。同时例如jstack、jmap等工具也是不囿于一个方面的问题...

使用 Python 向多个地址发送电子邮件

在本文中,我们将演示如何使用Python编程语言向使用不同电子邮件地址的不同收件人发送电子邮件。具体来说,我们将向许多不同的人发送电子邮件。使用Python向多个地址发送电子邮件Python...

提高工作效率的--Linux常用命令,能够决解95%以上的问题

点击上方关注,第一时间接受干货转发,点赞,收藏,不如一次关注评论区第一条注意查看回复:Linux命令获取linux常用命令大全pdf+Linux命令行大全pdf为什么要学习Linux命令?1、因为Li...

linux常用系统命令_linux操作系统常用命令

系统信息arch显示机器的处理器架构dmidecode-q显示硬件系统部件-(SMBIOS/DMI)hdparm-i/dev/hda罗列一个磁盘的架构特性hdparm-tT/dev/s...

小白入门必知必会-PostgreSQL-15.2源码编译安装

一PostgreSQL编译安装1.1下载源码包在PostgreSQL官方主页https://www.postgresql.org/ftp/source/下载区选择所需格式的源码包下载。cd/we...

Linux操作系统之常用命令_linux系统常用命令详解

Linux操作系统一、常用命令1.系统(1)系统信息arch显示机器的处理器架构uname-m显示机器的处理器架构uname-r显示正在使用的内核版本dmidecode-q显示硬件系...

linux网络命名空间简介_linux 网络相关命令

此篇会以例子的方式介绍下linux网络命名空间。此例中会创建两个networknamespace:nsa、nsb,一个网桥bridge0,nsa、nsb中添加网络设备veth,网络设备间...