MS Word mailmerge类似于允许从ASP.Net Web应用程序导出到Word文档的功能

时间:2010-07-05 17:58:05

标签: asp.net mailmerge

我要求我需要允许用户上传带有占位符的Word文档,以便在数据库中找到某些字段。这将是他们的模板。例如,占位符可以预先加上@@或其他东西。例如

Dear @@Title @@Lastname

然后他们可以抓取一条记录并点击导出到Word文档。然后,这将让他们选择模板。他们可以选择模板,然后单击继续。然后,我将获取模板并将@@Title替换为所选记录的数据库中的title字段。我不知道从哪里开始或我需要做什么组件。

从我最初的调查看来,我可以使用Office 2007的新开放XML标准来实现这一点。所以也许我应该在模板中阅读并将所有内容保存到某个地方的db表中。然后,当用户想要导出时,我再次获取内容,然后搜索并替换@@占位符并正确链接它们。然后再次将文档保存到输出流,然后在浏览器中显示保存对话框。

我正在使用ASP.Net MVC并且我在托管环境中。我也可能正在考虑动态创建新的View类型,并在用户上传模板时动态创建新视图。不确定这种方法是否有效。

这是一个好方法吗? 我应该看什么工具? 还有其他建议吗?

2 个答案:

答案 0 :(得分:3)

这与我们将数据插入word文档然后将其返回给用户所采用的方法类似。我们打开.docx文件(它是一个易于提取的zip文件)提取文档(在word文件夹中名为document.xml),做了替换,然后将文档放回.docx文件并将其返回给用户。

我们遇到的一个问题是,单词在奇怪的地方插入了标签,特别是拼写/语法错误,所以我们在进行搜索/替换时需要小心。

我们决定不将文档中的字段存储在数据库中,以便轻松更新文档。

我们使用dotnetzip组件打开.docx文件

我们还做的是将多个文档合并到一个大型文档中,以节省下载次数。如果我记得我们使用open xml toolkit进行合并。该网站还有大量其他可能有用的信息。

答案 1 :(得分:1)

查看Scott Guthries blog post关于名为“Razor”的新视图引擎代码,不久将从Microsoft发布。在评论中有人谈到它可以用于邮件合并场景,就像你在ASP.NET MVC视图中谈到的那样。