使用互操作 C# 在 Word 中生成多级列表

本文关键字:多级 列表 Word 互操作 | 更新日期: 2023-09-27 18:30:58

我想要的:

  1. 标题 1

    1.1. 标题 2

       1.1.1. Heading 3
    

    1.2. 标题 2

  2. 标题 1

等等。

我看到存在一种列表样式可以完成此操作,但是我不知道如何对其进行编码。

Word.Range rng = wordDoc.Paragraphs.Add().Range;
rng.ListFormat.ApplyListTemplate(...);

我不确定如何填写 ApplyListTemplate() 的参数,或者这是否是正确的方法。我找不到任何ListTemplate对象的任何实际示例,只能找到对它们的引用。

参考:http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.listformat.applylisttemplate(v=office.15).aspx

使用互操作 C# 在 Word 中生成多级列表

我刚刚在文档级加载项中完成了此操作。如果您的外接程序是应用程序级外接程序,则情况会略有不同。

Microsoft.Office.Interop.Word.Application app = Globals.ThisDocument.Application;
ListGallery gallery = app.ListGalleries[WdListGalleryType.wdOutlineNumberGallery];
// this one matches the numbering in your example, but not the indentation
ListTemplate myPreferredListTemplate = gallery.ListTemplates[5];
Style style = Globals.ThisDocument.Styles["Heading 1"];
style.LinkToListTemplate(myPreferredListTemplate, 1);

库似乎是预定义的应用程序级列表样式,但您也可以创建和重用文档级ListTemplateDocument.ListTemplates

创建自己的缩进将如何获得所需的缩进。您只需要在ListTemplate.ListLevels中玩弄设置即可。