2

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

Dear @@Title @@Lastname

然后他们可以抓取记录并点击导出到 Word 文档。这将让他们选择模板。他们可以选择模板,然后单击继续。然后,我将获取模板并将 替换@@Title为数据库中所选记录的标题字段。我不确定从哪里开始或需要哪些组件来执行此操作。

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

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

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

4

2 回答 2

3

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

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

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

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

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

于 2010-07-05T18:18:06.123 回答
1

查看Scott Guthries 博客文章,了解 Microsoft 即将推出的名为“Razor”的新视图引擎代码。在评论中有谈论它能够用于邮件合并场景,就像你谈论的 ASP.NET MVC 视图一样。

于 2010-07-05T18:25:42.800 回答