如何使用Interop.Word在C#中进行邮件合并?

时间:2012-11-01 15:49:20

标签: c# printing interop ms-word placeholder

我在Word中有一个用于打印发票的模板。

现在,我想知道如何以编程方式创建Word文档并将模板内容复制到新文档中,以便我仍然拥有一个干净的模板,然后替换使用Mail.Merge键入的占位符。我发现了类似的Mail.Merge问题,但大多数都需要Spire组件,我不感兴趣,因为它需要付费。我只是一名学生。其他人,实际上并没有那么多帮助。

我现在面临的问题如下:

  1. 创建Word文档
  2. 将模板内容复制到新文档中
  3. 如何将占位符名称添加到MailMerge,因为我对此非常困惑。
  4. MailMerge
  5. 这是我编写的当前代码,这实际上是我第一次使用Interops

    Document document = new Document();
    Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application();
    document = wordApp.Documents.Open(fileName);
    string[] fieldNames = {"date_issued", "month_covered", "tuition", "lunchfee", "discount", "in_no", "student_no", "student_name", "amount_due", "amount_paid", "balance", "penalty", "status"};
    string[] data = new string[25];
    Range range;
    document.MailMerge.Fields.Add(range, fieldNames[0]);
    document.MailMerge.Execute();
    

    我真的很困惑这部分

    document.MailMerge.Fields.Add(range, fieldNames[0]);
    

    我不知道range是什么

1 个答案:

答案 0 :(得分:1)

如果您的模板是实际模板而不是普通的Word文档(扩展名为.dotx或.dot,而不是.docx / .doc),则无需复制任何内容。只需根据模板创建一个新文档:

var doc = wordApp.Documents.Add("put template path here");

这将包含模板的内容。如果您已使用Word UI在模板中设置mailmerge(包括合并数据的位置),那么这也将被转移到新文档中。

然后你可以从C#执行mailmerge:

doc.MailMerge.Execute();