这个问题并不容易。
这是我回答的一些相关问题:Creating RTF , DOC , or DOCX in iOS
读完之后,这是一个真实的单词示例:
<w:p w:rsidP="00CA7135" w:rsidR="00137C91" w:rsidRDefault="00137C91">
<w:r>
<w:t>Hello</w:t>
</w:r>
<w:r w:rsidR="008C194D">
<w:t xml:space="preserve"/>
</w:r>
<w:r>
<w:t>My name</w:t>
</w:r>
</w:p>
<w:p w:rsidP="00CA7135" w:rsidR="008C194D" w:rsidRDefault="00137C91">
<w:r>
<w:t xml:space="preserve">is</w:t>
</w:r>
<w:r w:rsidR="008C194D" w:rsidRPr="00E92392">
<w:rPr>
<w:b/>
</w:rPr>
<w:t xml:space="preserve">John Doe</w:t>
</w:r>
<w:proofErr w:type="spellStart"/>
<w:r w:rsidR="008C194D" w:rsidRPr="00E92392">
<w:rPr>
<w:b/>
</w:rPr>
<w:t/>
</w:r>
<w:proofErr w:type="spellEnd"/>
<w:r w:rsidR="008C194D" w:rsidRPr="00E92392">
<w:rPr>
<w:b/>
</w:rPr>
<w:t xml:space="preserve"/>
</w:r>
<w:r w:rsidR="008C194D">
<w:t xml:space="preserve"/>
</w:r>
<w:r>
<w:t>I want to</w:t>
</w:r>
<w:r w:rsidR="008C194D">
<w:t xml:space="preserve"/>
</w:r>
<w:r>
<w:t>show</w:t>
</w:r>
<w:r w:rsidR="00E92392">
<w:t xml:space="preserve">how difficult it is</w:t>
</w:r>
</w:p>
如您所见,一个段落中的文字永远不会只有一笔。
回答您的问题:
- 我认为将 docx 存储在数据库中的唯一方法是将完整的 XML 和图像(或 docx 作为 ByteArray)存储
- 要修改一个段落中的文本,您可以搜索所有
<w:t>
标签并将它们按相同的<w:p>
标签分组。例如“你好”和“我的名字”在同一个<w:p>
。然后你会想办法知道文本的插入位置,并在右边插入文本<w:t>
- 这只是将 XML 和图像重新压缩在一起