如何解决如何在特定元素索引处修改pptx.oxml.xmlchemy.XmlString对象的xml?
python-pptx
中的(1x2)表的tr object
带有以下xml(缩写):
<a:tr xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" h="777240">
<a:tc>
<a:txBody>
<a:bodyPr/>
<a:lstStyle/>
...
</a:txBody>
<a:tcPr anchor="ctr">
...
</a:tcPr>
</a:tc>
<a:tc>
<a:txBody>
<a:bodyPr/>
<a:lstStyle/>
...
</a:txBody>
<a:tcPr anchor="ctr">
...
</a:tcPr>
</a:tc>
<a:extLst>
<a:ext uri="{0D108BD9-81ED-4DB2-BD59-A6C34878D82A}">
<a16:rowId xmlns:a16="http://schemas.microsoft.com/office/drawing/2014/main" val="2729466849"/>
</a:ext>
</a:extLst>
</a:tr>
运行以下代码(在添加新列时):
prs_obj = pptx.Presentation(filepath)
tab = prs_obj.slides[0].shapes[0].table
for tr in tab._tbl.tr_lst:
new_tc = copy.deepcopy(tr.tc_lst[-1])
tr.append(new_tc)
在xml <a:extLst> ...</a:exLst>
标记后添加新的单元格(并使PowerPoint无法显示单元格内容)。相反,我想在前两个单元格之后但在<a:tc>
之前插入另一个<a:extLst>
元素。
我在xml上阅读的所有教程都以您有一个可以解析的xml文件为前提,即tree = ET.parse(file)
,但是tr.xml不是可解析的文件,它是一个'pptx.oxml.xmlchemy.XmlString'
对象。 / p>
解决方法
该XML已经被解析。您需要的是:
tr.tc_lst[-1].addnext(new_tc)
代替:
tr.append(new_tc)
这只是lxml._Element
类的所有其他方法之一,它们是所有python-docx
元素的子类。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。