【发布时间】:2009-05-19 20:58:26
【问题描述】:
我想知道是否有人知道如何使用 Excel 文件作为数据源进行邮件合并,以填写 Word 模板上的字段?如果可以的话,我希望使用 Word 的互操作...但是在查找代码时遇到了一些困难。 有人对此有任何语法吗?提前谢谢你。
【问题讨论】:
-
并不是说它改变了答案,而是你使用的是什么版本的 Office?
标签: c# email interop ms-word mailmerge
我想知道是否有人知道如何使用 Excel 文件作为数据源进行邮件合并,以填写 Word 模板上的字段?如果可以的话,我希望使用 Word 的互操作...但是在查找代码时遇到了一些困难。 有人对此有任何语法吗?提前谢谢你。
【问题讨论】:
标签: c# email interop ms-word mailmerge
学习如何在 MS Word 中自动执行特定操作的一个非常有用的方法是在启用“记录宏”的情况下实际手动执行操作。
一旦您有了 VBA 宏,就很容易将其转换为使用互操作的 VB.NET 或 C#。我倾向于先在 Word 中手动调整 VBA,以便在使用互操作层转换为 .NET 语言之前先对其进行测试。
我对mailmerge了解不多,但这是我录制宏时生成的一些VBA:
ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
ActiveDocument.MailMerge.OpenDataSource Name:= _
"c:\Arrays.xlsx", ConfirmConversions:=False, _
ReadOnly:=False, LinkToSource:=True, AddToRecentFiles:=False, _
PasswordDocument:="", PasswordTemplate:="", WritePasswordDocument:="", _
WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, _
Connection:= _
"Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=c:\Arrays.xlsx;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=37;Jet OLEDB:Database Loc" _
, SQLStatement:="SELECT * FROM `Sheet1$`", SQLStatement1:="", SubType:= _
wdMergeSubTypeAccess
我没有在这里包含完整的代码,但希望这能给你一些想法。
【讨论】:
Word(至少在 2007 版本中,这是我正在研究的)可以开箱即用地做到这一点。只需选择 Excel 文件作为数据源。你想在你的代码中做什么?
【讨论】:
我使用this 3rd 方控制。您可以将 xls 文件读入数据表,然后告诉控件合并它。
【讨论】: