我正在使用python-docx生成一些文档。
我可以看到,存在一个行编号特性,它可以应用于文档部分(至少对于OOXML标准)。
我还可以看到,这个属性在python-docx API中不存在。
我假设可以访问底层的sectPr字段来添加lnNumType标记,但是我还没有(很容易)找到任何示例。
我是不是把我的标准搞糊涂了?还是我的问题有点模糊?
发布于 2016-07-16 06:18:25
一旦您拥有了节对象,您就可以使用以下方法获得sectPr元素:
sectPr = section._sectPr如果你在‘python变通函数OxmlElement’上搜索,你会找到例子。所有元素都是从lxml _Element继承的,因此lxml操作可以工作。BaseOxmlElement还添加了一些方便的其他方法。一个基本的要点是:
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()
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
https://stackoverflow.com/questions/38400208
复制相似问题