Word Interop C#-在保存嵌套的列表中插入列表

Word Interop C#-在保存嵌套的列表中插入列表,c#,list,ms-word,interop,paste,C#,List,Ms Word,Interop,Paste,我有一堆Word文档,其中一个是模板。在这个模板文件中,我有“$clause#”关键字来指示我必须将现有子句#.docx文档的内容粘贴到哪里。此“$clause#”关键字可以在列表中,clause#.docx文件也可以在其中包含多级列表。问题是:如何将子句#.docx文件的内容插入template.docx文件中,替换$clause并保存列表顺序。我尝试了几乎所有的方法,如粘贴和格式化,尝试在书签之间粘贴内容并应用格式。我就是不知道如何让这个/棒极了/库工作。几乎所有关于它的事情都是违反直觉的,

我有一堆Word文档,其中一个是模板。在这个模板文件中,我有“$clause#”关键字来指示我必须将现有子句#.docx文档的内容粘贴到哪里。此“$clause#”关键字可以在列表中,clause#.docx文件也可以在其中包含多级列表。问题是:如何将子句#.docx文件的内容插入template.docx文件中,替换$clause并保存列表顺序。我尝试了几乎所有的方法,如粘贴和格式化,尝试在书签之间粘贴内容并应用格式。我就是不知道如何让这个/棒极了/库工作。几乎所有关于它的事情都是违反直觉的,我正要放弃


我也试过这两个,但都没用。templateDoc.ActiveWindow.Selection.PasteAndFormat(WdRecoveryType.wdListCombineWithExistingList);rng.Paste和Format(WdRecoveryType.WDList与现有列表组合);
foreach (string tokenFile in tokenFiles)
        {
            string tokenText = "$" + Path.GetFileNameWithoutExtension(tokenFile).ToLowerInvariant();
            Console.WriteLine(tokenFile);
            Document tokenDoc = app.Documents.Open(appDir + tokenFile);

            tokenDoc.Activate();
            tokenDoc.ActiveWindow.Selection.WholeStory();

            templateDoc.Activate();
            templateDoc.ActiveWindow.Selection.Find.Execute(tokenText);
            var templateFontSize = templateDoc.ActiveWindow.Selection.FormattedText.Font.Size;
            var templateSpacing = templateDoc.ActiveWindow.Selection.FormattedText.Font.Spacing;
            var templateFontName = templateDoc.ActiveWindow.Selection.FormattedText.Font.Name;
            var templateLineSpacing = templateDoc.ActiveWindow.Selection.FormattedText.ParagraphFormat.LineSpacing;

            tokenDoc.Activate();
            tokenDoc.ActiveWindow.Selection.Copy();

            templateDoc.Activate();
            templateDoc.ActiveWindow.Selection.Collapse(WdCollapseDirection.wdCollapseEnd);

            templateDoc.Bookmarks.Add(tokenText.Replace("$", "") + "BM1");
            templateDoc.Bookmarks.Add(tokenText.Replace("$", "") + "BM2");
            int bmk1End = templateDoc.Bookmarks[bmcnt].Range.End;
            int bmk2Start = templateDoc.Bookmarks[bmcnt + 1].Range.Start;
            Range rng = templateDoc.Range(bmk1End, bmk2Start);
            rng.Paste();

            rng.Font.Size = templateFontSize;
            rng.Font.Spacing = templateSpacing;
            rng.Font.Name = templateFontName;
            rng.ParagraphFormat.LineSpacing = templateLineSpacing;
            bmcnt += 2; //It's just a counter

            tokenDoc.Close();
        }