首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用python向docx文档部分添加行号

如何使用python向docx文档部分添加行号
EN

Stack Overflow用户
提问于 2016-07-15 15:44:38
回答 1查看 1.2K关注 0票数 4

我正在使用python-docx生成一些文档。

我可以看到,存在一个行编号特性,它可以应用于文档部分(至少对于OOXML标准)。

我还可以看到,这个属性在python-docx API中不存在。

我假设可以访问底层的sectPr字段来添加lnNumType标记,但是我还没有(很容易)找到任何示例。

我是不是把我的标准搞糊涂了?还是我的问题有点模糊?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-16 06:18:25

一旦您拥有了节对象,您就可以使用以下方法获得sectPr元素:

代码语言:javascript
复制
sectPr = section._sectPr

如果你在‘python变通函数OxmlElement’上搜索,你会找到例子。所有元素都是从lxml _Element继承的,因此lxml操作可以工作。BaseOxmlElement还添加了一些方便的其他方法。一个基本的要点是:

代码语言:javascript
复制
sectPr = section._sectPr
lnNumType = OxmlElement('w:lnNumType')
lnNumType.set('fooAttrib', '42')
sectPr.append(lnNumType)

在许多情况下,您需要按照正确的顺序获得任何新的子元素,因为顺序几乎总是指定的。

您可以在这里找到对w:sectPr元素的一些方便的分析:http://python-docx.readthedocs.io/en/latest/dev/analysis/features/sections.html

从快速的浏览中可以看出,您只需在后面附加一个w:lnNumType,因为后面的元素就不那么常见了。但是如果你想变得更严格,你可以用这个代替sectPr.append()

代码语言:javascript
复制
sectPr.insert_element_before(lnNumType, (
    'w:pgNumType', 'w:pgNumType', 'w:cols', 'w:formProt', 'w:vAlign',
    'w:noEndnote', 'w:titlePg', 'w:textDirection', 'w:bidi',
    'w:rtlGutter', 'w:docGrid', 'w:printerSettings', 'w:sectPrChange',
))

您可以在这里看到.insert_element_before()的实现:https://github.com/python-openxml/python-docx/blob/master/docx/oxml/xmlchemy.py#L718

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38400208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档