Я предлагаю вам использовать xslt, потому что ваши данные уже в формате xml и есть хорошо определенные xml-форматы от Microsoft.
Вы можете написать шаблон документа со словом и сохранить его в формате xml,Затем вы можете преобразовать word-xml в xsl-template с вашим html-xml в качестве входных данных.После xslt-преобразования у вас есть действительное слово xml с вашими динамическими значениями из html-xml.
Пример XSLT для excel
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="xml" encoding="UTF-8" omit-xml-declaration="no" />
<xsl:template match="/">
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">
...
<xsl:for-each
select="/yourroot/person">
...
<Cell ss:StyleID="uf">
<Data ss:Type="String">
<xsl:value-of
select="@Name" />
</Data>
</Cell>
..
</xsl:for-each>
...
</xsl:template>
</xsl:stylesheet>