ASP.NET将数据导出到Word模板

时间:2011-01-20 21:52:58

标签: asp.net sql-server xml sql-server-2008 ms-word

我在Word 2007模板中有几个套用信函。我需要从我的Web表单应用程序(Sql Server 2008后端)传递数据。

我需要尽可能无缝地执行此操作,因此生成用于单词的文本文件以用作数据源不是一种选择。出于性能原因,我还想避免在我的Web服务器上运行Office。

我想知道是否有办法将模板xml存储在我的数据库中,并在需要生成字母时使用我的数据填充正确的元素,并将此文件直接下载到用户计算机。

有没有人有这种问题的解决方案?

1 个答案:

答案 0 :(得分:3)

如果您创建一个包含要替换的令牌的Word 2007 .docx文件,则可以轻松替换服务器上的令牌,并根据旧的.docx文件向客户端发送新的.docx文件,并替换令牌。

  1. 将模板创建为.docx文件并将其保存在服务器上
  2. 更改所有邮件合并字段,并且易于查找和解析不会出现在文档中的占位符,并且不需要XML编码。例如:{{FirstName}}。
  3. 为要生成的每个文档创建一个新的空白.docx(zip)文件
  4. 从模板.docx文件
  5. 中读取每个文件
  6. 在阅读源文件时,请根据需要搜索并替换您的令牌
  7. 确保XML编码您在新文档中放入的所有文本。您可以使用HttpUtility.HtmlEncodeXmlTextWriter实例或自定义方法将相应的xml实体替换为有问题的字符(<,',“,>)。
  8. 将文件发送到客户端
  9. 通过操纵WordML标签可以完成更复杂的事情,但如果您只想更换一些可变数据,则上述方法将是最简单/禁用的方法。