首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >标题中的Word合并字段在打印预览中丢失值

标题中的Word合并字段在打印预览中丢失值
EN

Stack Overflow用户
提问于 2017-11-22 11:03:32
回答 1查看 473关注 0票数 0

我有一个ASP WebForms应用程序,其中我使用一个包含合并字段的word模板,用从数据库中提取的数据替换它们。这个应用程序工作得很好,word文档被导出,但是当尝试打印文档时,其中一个合并字段存在于标题中,失去了它的值并恢复到初始的合并字段名。这是必须从应用程序代码中修复的东西,还是一个单词设置问题。

任何帮助都是非常感谢的。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-23 09:15:03

我已经成功地使用OpenXML生产力工具解决了这个问题。结果是你不能在标题中添加一个合并字段,所以我所做的就是把它放在一个文本框中。我忘了在最初的描述中提到这个部分。因此,文本元素被深埋在开放的xml中。当我设法找到它并记录里面的内容时,我发现我插入了MERGEFIELD <> MERGEFORMAT。每次我尝试在这个<>中插入我想要的值时,当我点击打印预览时,它就会被重置。所以我所做的,根据一个有类似问题的人的建议,删除这个文本框,创建一个干净的文本框,我只输入了"Test“。它需要在内部有一个字符串,这样打开的xml就可以创建元素文本(instrTxt)。在C#中,我这样做了:

代码语言:javascript
复制
foreach (var hPart in firstDoc.MainDocumentPart.HeaderParts)
{
     foreach (var txt in hPart.Header.Descendants<Text>())
     {
         if(txt.Text == "Test")
         {
             txt.Text = "My custom text";
         }
      }
}

因此,对于每个标头部分(因为我不能确定它的is..it可能在多个头部分中的哪个部分),获取文本类型的所有后代。我得到的比我想要的多一些。我还得到了一些包含页码的内容(因为我的页眉中也有)。所以我添加了一个if来检查它是否是我想要的文本元素。一旦我找到了它,我就添加了我想要的文本。

长话短说,我没有在标题中使用合并字段,而是使用了文本。也许这不是最有效的方法。也许问题仍然存在,(如果我可以在标题中插入一个合并字段,并且实际上使它在打印预览时不让word重置值?)但这对我有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47433063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档