我有一个任务,我需要在Word(2016)中执行邮件合并。我需要执行正常的邮件合并,但我需要在不使用Outlook的情况下执行一些自定义电子邮件发送。我真的很想使用内置的邮件合并向导,因为它对我们的用户来说很熟悉,但是我找不到调用向导的方法。我发现了VBA的ShowWizard方法,但没有像C#那样。使用VSTO C#可以访问邮件合并向导吗?有没有更好的方法来完成目标?C中的Word邮件合并向导#
0
A
回答
0
首先,我建议你不要使用VBA或Interop库。两者只能在装有MS Office的机器上运行。使用VBA应用程序时,如果用户使用不同版本的Office将运行它们,并且您将有新更新,则可能会遇到问题。 Interop在服务器场景中也存在问题。
对于邮件合并,从基于OpenXML的第三方工具包中选择一个工具包是非常有意义的,因此它们可以在没有MS Office的情况下运行(思考服务器场景)。您将需要带有占位符数据的MS Word模板文档。然后,您可以使用c#为报告加载数据,并将数据与模板合并以获取最终文档(docx,pdf,xps或图像格式)。下面是需要与模板从数据库将数据合并得到一个PDF文档一个这样的工具包使用的代码:
IEnumerable<Customer> customers = DataAccess.GetCustomerById(15);
DocumentGenerator dg = new DocumentGenerator(customers);
DocumentGenerationResult result = dg.GenerateDocument("MyTemplate.docx", "MyReport.pdf");
在此link你可以找到更多的信息和示例。
到目前为止,您有一种方法来生成邮件合并文档。现在到你的第二个问题,这是邮寄这些文件。
我假设你的电子邮件服务器是基于MS Exchange的。较新版本的MS Exchange Server公开可以从客户端使用的Web服务,而无需安装Outlook。
有一些分步教程,如https://msdn.microsoft.com/en-us/library/office/dn567668(v=exchg.150).aspx,这将有助于您开始。您将能够编写将完全控制发送邮件消息的各个方面的应用程序。我为我们公司做了一个简单的邮件发送库。我花了一些时间来弄清楚它的来龙去脉,但现在它是一个不可或缺的东西。它运行顺畅,没有任何问题。
相关问题
- 1. 执行Word邮件合并
- 2. ASP.NET Word邮件合并
- 3. Word邮件合并字段
- 4. 用于SQL的Word邮件合并
- 5. Word VBA邮件与附件合并
- 6. Word 2007邮件合并只包装API
- 7. Word打开XML邮件合并
- 8. 邮件合并Word 2003标题字段C#
- 9. 将数据库中的HTML邮件合并到MS Word中
- 10. Excel宏到Word邮件合并正试图合并列中的所有行
- 11. Word中的问号邮件合并,如果语句
- 12. 合并Word文档C#
- 13. 是否可以将PDF插入到使用C#的Word邮件合并中
- 14. 在Microsoft Word 2007邮件合并器中格式化数字
- 15. 如何在Microsoft Word 2007邮件合并中压缩空白行?
- 16. 如何在MS Word中隐藏邮件合并行结果?
- 17. 在邮件合并中使用Word用户信息
- 18. 使用邮件合并从excel文件生成word文档
- 19. Word邮件合并不会正确显示经过的秒数
- 20. 使用SQLite数据库的MS Word邮件合并
- 21. 用于ASP.NET服务器的Word邮件合并
- 22. 在Mac上使用邮件合并,使用Word 2016.合并到电子邮件是灰显的/
- 23. C#导出/合并DataGridView行到Word模板
- 24. 使用NetOffice以编程方式执行Word邮件合并
- 25. (MS Word/VBA)当文档打开时执行邮件合并
- 26. 从ASP.NET Web应用程序合并Word邮件
- 27. 找到MS Word邮件合并数据源
- 28. 从dbgrid输入数据到word邮件合并
- 29. MS Word邮件合并,多列成行,动态表
- 30. 使用下拉菜单选择邮件合并模板 - Microsoft Word
感谢@ jura为我指出正确的方向。有没有免费的openxml工具包可以推荐?我将看看Nuget上的OpenXML SDK。它看起来像有一些工具可以将DOCX转换为HTML,并将从XLSX中提取数据,这两者都是我需要的。 – mack
如果您必须执行简单的文档操作,OpenXML SDK才有意义。我不得不用复杂的模板来解决复杂的文档合并问题。我的时间非常有限,所以我使用了第三方库。 –