office-js - 插入 Ooxml 并保留原始 XML 的结构
问题描述
我想在word文档中指定的位置添加SDT,但是通过insertooxml方法替换了表中的OOXML和段落后,发现SDT的位置和我预想的不一样。SDT -> p -> R 和 P -> SDT -> R 都会被 SDT -> Tc -> p -> R 替换。我的代码:
起源ooxml:
<w:tbl>
<w:tblPr>
<w:tblStyle w:val="a3"/>
<w:tblW w:w="0" w:type="auto"/>
<w:tblLook w:val="04A0" w:firstRow="1" w:lastRow="0" w:firstColumn="1" w:lastColumn="0" w:noHBand="0" w:noVBand="1"/>
</w:tblPr>
<w:tblGrid>
<w:gridCol w:w="2765"/>
</w:tblGrid>
<w:tr w:rsidTr="000C2493">
<w:tc>
<w:tcPr>
<w:tcW w:w="2765" w:type="dxa"/>
</w:tcPr>
<w:p w:rsidR="00044EAA" w:rsidRDefault="00044EAA">
<w:r>
<w:rPr>
<w:rFonts w:hint="eastAsia"/>
</w:rPr>
<w:t>5</w:t>
</w:r>
<w:r>
<w:t>55</w:t>
</w:r>
</w:p>
</w:tc>
</w:tr>
</w:tbl>
在段落外添加 SDT:
<w:body>
<w:sdt>
<w:sdtPr>
<w:alias w:val="test"/>
<w:tag w:val="test"/>
</w:sdtPr>
<w:sdtContent>
<w:p w14:paraId="182ACA64" w14:textId="19FBA58A" w:rsidR="00555734" w:rsidRDefault="00F20FAA" w:rsidP="00555734">
<w:r>
<w:rPr>
<w:rFonts w:hint="eastAsia"/>
</w:rPr>
<w:t>5</w:t>
</w:r>
<w:r>
<w:t>55</w:t>
</w:r>
</w:p>
</w:sdtContent>
</w:sdt>
</w:body>
代码:
paragraph.insertOoxml(ooxml, "Replace")
但我得到了结果:
<w:tbl>
<w:tblPr>
<w:tblStyle w:val="a3"/>
<w:tblW w:w="0" w:type="auto"/>
<w:tblLook w:val="04A0" w:firstRow="1" w:lastRow="0" w:firstColumn="1" w:lastColumn="0" w:noHBand="0" w:noVBand="1"/>
</w:tblPr>
<w:tblGrid>
<w:gridCol w:w="2765"/>
</w:tblGrid>
<w:tr w:rsidTr="000C2493">
<w:sdt>
<w:sdtPr>
<w:alias w:val="test"/>
<w:tag w:val="test"/>
</w:sdtPr>
<w:sdtEndPr/>
<w:sdtContent>
<w:tc>
<w:tcPr>
<w:tcW w:w="2765" w:type="dxa"/>
</w:tcPr>
<w:p w:rsidR="00044EAA" w:rsidRDefault="00044EAA">
<w:r>
<w:rPr>
<w:rFonts w:hint="eastAsia"/>
</w:rPr>
<w:t>5</w:t>
</w:r>
<w:r>
<w:t>55</w:t>
</w:r>
</w:p>
</w:tc>
</w:sdtContent>
</w:sdt>
</w:tr>
</w:tbl>
在这个结果中,SDT 的位置被调整到了 Tc 以上。</p>
输入输出不应该是这样的:
输入:原始段落结构:body->tbl->tc->p->r,ooxml 结构:body->sdt->p->r
预期输出(替换后):body->tbl->tc->sdt
- >p->r
但现在:body->tbl->sdt
->tc->p->r
输入:原始段落结构:body->tbl->tc->p->r,ooxml 结构:body->p->sdt->r
预期输出(替换后):body->tbl->tc->p ->sdt
->r
但现在:body->tbl->sdt
->tc->p->r
最后的
我尝试了许多可能的方法,但不幸的是它们不能正常工作。这replace OOXML
似乎失去了原始 OOXML 的结构。
任何问题或建议将不胜感激。
解决方案
推荐阅读
- apache-kafka - 将 Cloudera Kafka (CDK) 迁移到 Apache Kafka
- android - 从 RSS 提要读取数据 - getInputStream(); 碰撞
- python - 如何使用 Tweepy 获得超过 10 天的推文
- python - Matplotlib:绘制一条带有开放标记的线,其中该线在标记内不可见
- mysql - MYSQL 命令行 SELECT INTO OUTFILE, LOAD DATA INFILE ... INTO TABLE 到 CSV,列中有 html 数据
- python - str.replace 不适用于我的系列 - 但在示例中效果很好
- javascript - 如何将数组中重复项的数量附加为数组的道具?
- ios - 我多久可以调用一次`UIApplication. shared.registerForRemoteNotifications()`
- json - 远程服务器返回错误:(413)请求实体太大。弹性搜索和 JSON
- python - 是否有类似于 np.random.multivariate_normal 的 python 函数生成 NON-NORMAL 分布?