在我们的LOB应用程序中,有一个非常重要的打印字母用例,然后打印并从邮件发布(每天数千个)。目前的情况是,字母模板是在Word 97中创建的,字段是使用基本上使用文字自动化的VB.Net应用程序从数据库中的值合并的邮件。但依赖于Word 97今天不是一个好主意。我们只有几台安装了Word 97的PC,因为公司的其余部分已迁移到Office 2007.
目前最适合此方案的软件或技术(与.Net兼容)。是否更好地做同样的事情,但转移到Word 2007或PDF或其他东西。价格可能不是一个因素。重要的是,字母模板必须由业务用户设计,数据填充占位符来自DB。
奖励是导入数百个现有的Word 97字母模板,而无需从头开始重写。
答案 0 :(得分:2)
Xpertdoc获取Word文档并在服务器端,内部部署或从云端高效地运行(合并)它们,以生成交互式和批量生成信函。 CGU是一家大型保险集团,每天使用它来生成,审计,打印和邮寄数百封信件。以下是他们对此的看法: http://www.youtube.com/watch?v=xbqWiFt5dUA&feature=channel&list=UL Symetra Life Insurance将其与客户关系管理(Dynamics CRM)集成在一起,在3周内整合了450个字母模板。
答案 1 :(得分:1)
我的组织也在寻求解决与此类似的问题,我可以与您分享我发现的一些事情。我们还没有这样做,仍处于设计阶段,所以请记住以下内容。
您的情况还取决于邮件公司所需的格式 - 目前他们必须接受Word 97文档,他们是否也可以接受XML,DOCX,PDF或其他内容?
有一个名为Intelledox的商业产品允许您使用Word 2003(可能早在Word 2000?)作为模板设计器,然后从数据源(可以是数据库,Web服务等)组装文档。一个非常有趣的产品,虽然取决于您的预算。这可能会对您的最终用户模板设计标准产生很大影响。
您可以查看Open XML SDK,它允许您以编程方式生成DOCX(Word 2007)文件。您的业务用户将在Word中生成一个模板,并将其提供给可能会创建XSLT的开发人员。然后在运行时使用此XSLT以编程方式替换基本Word文档模板的内容。这不需要服务器上的Word,只需要SDK中的.NET DLL。缺点是,每次生成新模板时都需要进行一些开发人员处理。
我也考虑了报告方法 - 我们使用SQL Server Reporting Services,可以用来生成合并文档。它支持Word,Excel,PDF和其他导出格式。这样做的缺点是它通常还需要开发人员来设计报告。您可以部署用于高级用户的SQL Server Reporting Services Report Builder来生成他们自己的报告。如果你认为这种方法确保它是SQL Server 2008(Report Builder 2.0),显然Report Builder v1.0非常糟糕。
如果邮件发送室接受XML,您可以向邮件发送室提供XSLT文件,只发送数据,而不是发送汇编的文档。不确定您使用的印刷厂是否接受该印刷厂,或者您是否需要在内部保留已完成文件的副本以供审核。
最后,值得一看XPS format。不确定这些模板是如何设计的,也可能是编程很重。
希望这有助于您的思考!
答案 2 :(得分:1)
office 2007 SDK是否可以解决这种开箱即用的问题?
或者,您可以使用商业Rich文本编辑器直接回避办公室并直接使用wpf。
答案 3 :(得分:0)
嗯,对于各种报告,我使用了Crystal Reports,它允许您轻松地从数据库中检索信息并填写表单。您可以使用PDF或HTML格式。
答案 4 :(得分:0)
我的公司刚刚处理了这个问题,我们正在使用更新的单词2003.
首先,微软不支持在服务器风格的环境中使用Office产品,我的经验会给你带来很多痛苦。 Vb.net应用程序是在用户可以与程序交互的客户端计算机上运行还是在中央服务器上运行(您提到了专用计算机)
但这并不意味着您无法使用office创建模板。 office文件(.docx)是一个zip / compresseed xml文件,可以通过文本操作进行处理。
假设该流程是基于服务器的或不受监控的,我建议 a)将所有模板升级到office文件(.docx)。 b)使用office 2007来维护模板 c)编写或找到可以获取(.docx)文件的程序,解压缩它们,并替换合并字段。这个答案取决于模板的复杂程度。有许多程序可以处理文本替换等。 d)运行一个可以将docx转换为pdf的程序。假设该文档不需要后续修改。找到docx到pdf是可能的。
你的模板很简单吗?或者您是否有嵌套数据,文档中的条件格式以及其他此类复杂性?
答案 5 :(得分:0)
byte[] templateDocument = . . .
DataTable data = . . .
Stream templateDocStream = new MemoryStream(templateDocument);
mailmergeDoc = new DocIO.WordDocument(templateDocStream);
mailmergeDoc.MailMerge.Execute(data);
然后我们可以将文档发送到浏览器,如下所示
Response.AddHeader("Content-Disposition", "attachment; filename=merged.doc");
doc.Save(Response.OutputStream, Syncfusion.DocIO.FormatType.Doc);
Response.End();
答案 6 :(得分:0)
根据字母布局的复杂程度,WPF可能是一个不错的选择。
它是.NET框架的一部分,因此您不必依赖任何未来可能无法更新的第三方库或应用程序。希望避免重复Office 97中的问题。
我知道你说价格不是问题,但它也是免费的。
答案 7 :(得分:-1)
Microsoft ReportViewer。