【发布时间】:2020-11-04 10:41:56
【问题描述】:
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' 对象。
【问题讨论】:
标签: xml openxml elementtree python-pptx