Ms word 在Velocity模板中使用Word表格公式

Ms word 在Velocity模板中使用Word表格公式,ms-word,velocity,xdocreport,Ms Word,Velocity,Xdocreport,我正在使用Velocity和XDocReport从模板生成Word(docx)文档。我正在做的一件事是使用以下所示的技术,使用合并到模板中的数据创建表:,行前和行后。模板有一个数据行,在foreach循环中重复。这一切都很完美 表中的一列数据包含数字。我想在模板中的表中添加第二行,该行将包含要求和的列的单词表公式(请参阅),例如SUM(如上)。我的希望是,在生成文档时,这将自动汇总Velocity/XDocReport添加的所有数据行 不幸的是,这不起作用。有两个问题 (1) 当我包含公式时,文

我正在使用Velocity和XDocReport从模板生成Word(docx)文档。我正在做的一件事是使用以下所示的技术,使用合并到模板中的数据创建表:,行前和行后。模板有一个数据行,在foreach循环中重复。这一切都很完美

表中的一列数据包含数字。我想在模板中的表中添加第二行,该行将包含要求和的列的单词表公式(请参阅),例如SUM(如上)。我的希望是,在生成文档时,这将自动汇总Velocity/XDocReport添加的所有数据行

不幸的是,这不起作用。有两个问题

(1) 当我包含公式时,文档将完全生成,但当我打开该文件时,会出现以下错误:“很抱歉,我们无法打开……因为我们发现了一个问题。详细信息。输入意外结束。”似乎当您在公式中包含一种格式时,会导致问题,并且无法生成完整文档

当我通过将工作和非工作文档转换为ZIP文件并在文本编辑器中打开document.xml来打开它们时,我可以看到非工作document.xml文件不是一个完整的xml文件,而是在SUM(上面)行被截断:

=总和(如上)
而我后来添加公式的word文件有完整的XML结尾:

<w:r><w:instrText xml:space="preserve"> =SUM(ABOVE) </w:instrText></w:r><w:r><w:fldChar   w:fldCharType="separate"/></w:r><w:r><w:rPr><w:noProof/></w:rPr><w:t>232000</w:t></w:r><w:r><w:fldChar w:fldCharType="end"/></w:r><w:bookmarkStart w:id="0" w:name="_GoBack"/><w:bookmarkEnd w:id="0"/></w:p></w:tc></w:tr></w:tbl><w:p w:rsidR="003E2115" w:rsidRDefault="003E2115"/><w:sectPr w:rsidR="003E2115"><w:pgSz w:w="12240" w:h="15840"/><w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440" w:header="720" w:footer="720" w:gutter="0"/><w:cols w:space="720"/><w:docGrid w:linePitch="360"/></w:sectPr></w:body></w:document>
=总和(以上)232000
如果我省略了公式,仅在生成文档后才将其重新添加,则效果良好

(2) 当我包含没有任何格式的表格公式时,将生成文档,但总和始终为零。这似乎涉及到时间问题,公式需要等待文档生成或所有行都已添加


你知道怎么解决这个问题吗?(顺便说一句,我知道我可以在velocity代码中使用一个变量来对列的内容求和,但我更喜欢使用更简单的内置Word公式。)

同样的问题在创建时出现,公式似乎起作用,但需要更新,而不是自动更新。您需要添加一个宏以在文档打开时运行以更新所有字段(公式),或者按CTRL-a选择全部,然后按F9更新所有字段。好的,这是相同的问题宽度“目录”XDocReport不计算MS word宏简言之,您不能将公式与XDocReport一起使用谢谢。这里有两个部分。格式化公式会导致xDocReport阻塞。但是,如果不格式化公式,它“有效”,只需手动或使用宏进行更新。
<w:r><w:instrText xml:space="preserve"> =SUM(ABOVE) </w:instrText></w:r><w:r><w:fldChar   w:fldCharType="separate"/></w:r><w:r><w:rPr><w:noProof/></w:rPr><w:t>232000</w:t></w:r><w:r><w:fldChar w:fldCharType="end"/></w:r><w:bookmarkStart w:id="0" w:name="_GoBack"/><w:bookmarkEnd w:id="0"/></w:p></w:tc></w:tr></w:tbl><w:p w:rsidR="003E2115" w:rsidRDefault="003E2115"/><w:sectPr w:rsidR="003E2115"><w:pgSz w:w="12240" w:h="15840"/><w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440" w:header="720" w:footer="720" w:gutter="0"/><w:cols w:space="720"/><w:docGrid w:linePitch="360"/></w:sectPr></w:body></w:document>