python-docx 页面设置详解

 更新时间:2021年10月11日 08:29:59   作者:站着活  
今天小编就为大家分享一篇python 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.gutter,section.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'就改成几。  

总结

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

相关文章

  • python实现的自动发送消息功能详解

    python实现的自动发送消息功能详解

    这篇文章主要介绍了python实现的自动发送消息功能,涉及Python基于requests、itchat库的数据请求与信息处理相关操作技巧,需要的朋友可以参考下
    2019-08-08
  • unittest+coverage单元测试代码覆盖操作实例详解

    unittest+coverage单元测试代码覆盖操作实例详解

    这篇文章主要为大家详细介绍了unittest+coverage单元测试代码覆盖操作的实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • python基于K-means聚类算法的图像分割

    python基于K-means聚类算法的图像分割

    这篇文章主要介绍了python基于K-means聚类算法的图像分割,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Python使用Selenium实现模拟登录的示例代码

    Python使用Selenium实现模拟登录的示例代码

    Selenium(本文基于python3.8)是一个功能强大的自动化测试工具,它可以用于模拟用户在浏览器中的行为,比如点击、输入、滚动等等,本教程将详细介绍如何使用Python编写一个模拟登录地爬虫,使用XPath等多种元素匹配方法,需要的朋友可以参考下
    2023-08-08
  • Django重装mysql后启动报错:No module named ‘MySQLdb’的解决方法

    Django重装mysql后启动报错:No module named ‘MySQLdb’的解决方法

    这篇文章主要给大家介绍了关于Django重装mysql后启动报错:No module named ‘MySQLdb’的解决方法,分享出来,对同样遇到这个问题的朋友们一个参考学习,需要的朋友们下面随着小编来一起学习学习吧。
    2018-04-04
  • 关于sklearn包导入错误:ImportError: cannot import name Type解决方案

    关于sklearn包导入错误:ImportError: cannot import name Type解

    这篇文章主要介绍了关于sklearn包导入错误:ImportError: cannot import name‘Type‘解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Python 如何测试文件是否存在

    Python 如何测试文件是否存在

    这篇文章主要介绍了Python 如何测试文件是否存在,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • python中json、字典的区别以及相互转换方法

    python中json、字典的区别以及相互转换方法

    在Python中我们经常会用到JSON格式的数据,而将JSON格式转化为Python的字典类型是一种常见的操作,这篇文章主要给大家介绍了关于python中json、字典的区别以及相互转换方法的相关资料,需要的朋友可以参考下
    2023-11-11
  • Python实现比较两个文件夹中代码变化的方法

    Python实现比较两个文件夹中代码变化的方法

    这篇文章主要介绍了Python实现比较两个文件夹中代码变化的方法,实例分析了Python读取文件夹中文件及字符串操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • Python中如何判断是否为AJAX请求

    Python中如何判断是否为AJAX请求

    在Web开发中,AJAX请求是一种非常常见的与服务器进行数据交互的方式,本文将深度解析如何在Python中判断AJAX请求,有需要的小伙伴可以参考下
    2024-12-12

最新评论