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