C# 如何告诉邮件合并文档使用'';字段分隔符?

C# 如何告诉邮件合并文档使用'';字段分隔符?,c#,winforms,ms-word,interop,mailmerge,C#,Winforms,Ms Word,Interop,Mailmerge,代码: 当我处理上述内容时,我的应用程序实例会打开,说我被锁定在文件之外,因为我自己正在使用它???在我接受打开只读副本后,我收到以下(按顺序): 选择如何替换上述字段后: 原始邮件合并字段: 个人选择后: 我如何告诉Word应用程序使用“!”字符作为我的C代码中的字段分隔符 另外,我如何继续对话?我假设由于我的数据源不包含与列为邮件合并字段的字段匹配的字段,所以我收到了每个字段 以下是我的邮件合并字段: -fuldate -系统 -门诺 -名字 -地址1 -地址2 -地址3 -萨尔

代码:

当我处理上述内容时,我的应用程序实例会打开,说我被锁定在文件之外,因为我自己正在使用它???在我接受打开只读副本后,我收到以下(按顺序):

选择如何替换上述字段后:

原始邮件合并字段:

个人选择后:

我如何告诉Word应用程序使用“!”字符作为我的C代码中的字段分隔符

另外,我如何继续对话?我假设由于我的数据源不包含与列为邮件合并字段的字段匹配的字段,所以我收到了每个字段

以下是我的邮件合并字段:

-fuldate -系统 -门诺 -名字 -地址1 -地址2 -地址3 -萨尔

下面是我的.txt数据源文件中的分隔字段:


memno!名称地址1!addr2!城市国家!拉链!老糊涂!老糊涂!老城!老州!old_-zip

要解决此问题,我认为您需要创建3个合并字段:如下所示:

public void Print(string docLoc, string docSource)
        {
            try
            {
                Word.Application oWord = new Word.Application();
                Word.Document oWrdDoc = new Word.Document();
                oWord.Visible = true;
                Object oTemplatePath = "C:\\Users\NAME\\Desktop\\B-AIAddChgDual10-06-NEW.doc";
                oWrdDoc = oWord.Documents.Open(oTemplatePath);
                Object oMissing = System.Reflection.Missing.Value;
                oWrdDoc.MailMerge.OpenDataSource("C:\\Users\\NAME\\Desktop\\Test2.txt", oMissing, oMissing, oMissing,
                    oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing);
                oWrdDoc.MailMerge.Execute();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Source:\t" + ex.Source + "\nMessage: \t" + ex.Message + "\nData:\t" + ex.Data);
            }
            finally
            {
                //
            }
        }

请查看此链接

谢谢您的链接!:)但问题是我不会,在这个例子中也不会,处理一个合并字段。我想我找到了解决所有对话的方法,除了链接中提到的第一个带有记录分隔符的对话。当我在文档中已经有了8个合并字段时,我该如何绕过它呢?对那些为你付出努力的人表示尊重可能会有帮助,“分析狂”。很明显,在本例中,Word并没有将“!”识别为字段分隔符。@bibadia,我并没有任何不尊重的意思,如果出现这种情况,我向您道歉。我只是说,这篇文章似乎偏离了邮件合并和单个字段的主题,这与我在本例中所做的不同。仍然是一篇有趣的文章^^^我不明白Word为什么不将“!”识别为字段分隔符,因为它可以在下拉列表中用于分隔符选择?实际上,我指的是一连串的问题,其中的注释您没有回应或显然没有注意到。这里的问题可能是由于数据中有两个不同的候选定界符(!)和(_)。如果你有能力移除!,我至少会尝试一下。但这就是为什么我在我的评论中提到,你应该考虑“包装”你的文本数据,如果你可以在你的地址数据中出现一个逗号字符。
  formLetterDatas=>  MergeField1    [DUMMY_FIELD]
                          Data1           NULL
                          Data2           NULL
                          Data3           NULL

// Create a MailMerge Data file.
CreateMailMergeDataFile(tableHeader, formLetterDatas);