纯净、安全、绿色的下载网站

首页|软件分类|下载排行|最新软件|IT学院

当前位置:首页IT学院IT技术

python-docx 页面设置 python-docx 页面设置详解

站着活   2021-10-10 我要评论
想了解python-docx 页面设置详解的相关内容吗站着活在本文为您仔细讲解python-docx 页面设置的相关知识和一些Code实例欢迎阅读和指正我们先划重点:python,docx,docx页面设置下面大家一起来学习吧

初识word文档-节-的概念

编辑一篇word文档往往首先从页面设置开始从下图可以看出页面设置常操作的有页边距、纸张方向、纸张大小4个而在word中是以节(section)来分大的块每一节的页面设置可以不同所以在python-docx中也是一样当前节的各项属性全部保存在当前的section中要想设置当前节的页面就从了解section的各个属性应用开始吧

在这里插入图片描述

如果用python-docx新建一个空白文档那么默认是只有一个节

>>> import docx
>>> doc = docx.Document()
>>> len(doc.sections)
1

如果要增加节可以用doc.add_section()来完成

>>> import docx
>>> doc = docx.Document()
>>> len(doc.sections)
1
>>> doc.add_section()
<docx.section.Section object at 0x000001F27F85E370>
>>> len(doc.sections)
2  

了解了节之后我们开始来对节的页面进行设置

设置页边距

在python-docx包中常用页边距属性存在section的以下4个属性中:

section.top_margin:上页边距

section.bottom_margin:下页边距

section.left_margin:左页边距

section.right_margin:右页边距

页边距的值以厘米(cm)为单位让我们来看看刚才第二节的默认的页边距是多少

>>> print('上',doc.sections[1].top_margin.cm,'下',doc.sections[1].bottom_margin.cm,'左',doc.sections[1].left_margin.cm,'右',doc.sections[1].right_margin.cm)
上 2.54 下 2.54 左 3.175 右 3.175

注这里的sections[1]是第二节

下面把页边距设置成我们公文常用的5678页面距

>>> from docx.shared import Cm
>>> doc.sections[1].top_margin = Cm(3.7)
>>> doc.sections[1].bottom_margin = Cm(3.5)
>>> doc.sections[1].left_margin = Cm(2.8)
>>> doc.sections[1].right_margin = Cm(2.6)

这里要先导入docx中定义单位的Cm后面常用的单位还有Pt 也是这个块导入

另外 页边距属性还有3个不常用的就是装订线页眉、页脚边距分别为:section.guttersection.header_distance, section.footer_distance 设置方法同上不再赘述需要说明的是装订线还有一个位置属性暂时未发现如何设置默认为左如果需求设置成右可以建个模板docx文档导入

设置纸张方向和大小

Section中的三个属性描述了页面方向和尺寸分别为:section.orientation, section.page_width, section.page_height

纸张大小设置单位我习惯用cm设置同页边距

这里要特别说下orientation即纸张方向也是要设置的不能说你把纸张宽度设置宽了高度设置低了纸张就变成横向了会影响打印等

纸张方向的值是docx.enum.section.WD_ORIENTATION中枚举类型的2常量来设置的分别为:

WD_ORIENTATION.LANDSCAPE:纸张方向为横向

WD_ORIENTATION.PORTRAIT:纸张方向为纵向

先查看下:

>>> doc.sections[0].page_height.cm
27.94
>>> doc.sections[0].page_width.cm
21.59
>>> doc.sections[0].orientation
0

默认的是信纸大小横向

设置成我们常用的A4纸大小下:

from docx.shared import Cm
from docx.enum.section import WD_ORIENTATION
doc.sections[0].page_height = Cm(29.7)  # 设置A4纸的高度
doc.sections[0].page_width = Cm(21)  # 设置A4纸的宽
doc.sections[0].orientation = WD_ORIENTATION.PORTRAIT # 设置纸张方向为横向可以不设置 默认为横向
doc.sections[1].page_height = Cm(21)  # 设置A4纸的高度
doc.sections[1].page_width = Cm(29.7)  # 设置A4纸的宽
doc.sections[1].orientation = WD_ORIENTATION.LANDSCAPE # 设置纸张方向为纵向 

设置分栏

有些时候我们还要在某些节中分栏,给节设置分栏的语句比较固定就是更改section的一个私有属性先导入docx.oxml.ns.qn,然后一句话搞定

from docx.oxml.ns import qn
doc.sections[1]._sectPr.xpath('./w:cols')[0].set(qn('w:num'), '2') #把第二节设置为2栏

想设置成几栏 把‘2'就改成几  

总结

本篇文章就到这里了希望能够给你带来帮助也希望您能够多多关注的更多内容!


相关文章

猜您喜欢

  • Echarts空气质量地图效果 Javascript Echarts空气质量地图效果详解

    想了解Javascript Echarts空气质量地图效果详解的相关内容吗Akimoto Hiroshi在本文为您仔细讲解Echarts空气质量地图效果的相关知识和一些Code实例欢迎阅读和指正我们先划重点:Javascript,Echarts,空气质量地图下面大家一起来学习吧..
  • Unity局域网聊天室 Unity实现局域网聊天室功能

    想了解Unity实现局域网聊天室功能的相关内容吗高小耸在本文为您仔细讲解Unity局域网聊天室的相关知识和一些Code实例欢迎阅读和指正我们先划重点:Unity局域网聊天室,Unity局域网聊天,Unity聊天室下面大家一起来学习吧..

网友评论

Copyright 2020 www.gamerfx.net 【游戏天空】 版权所有 软件发布

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 点此查看联系方式