OpenXML 2 SDK - Word 文档 - 以编程方式创建项目符号列表
我正在尝试使用 OpenXML SDK 2.0 CTP 以编程方式创建 Word 文档。在我的文档中,我必须插入项目符号列表,列表中的某些元素必须带有下划线。我该怎么做?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我正在尝试使用 OpenXML SDK 2.0 CTP 以编程方式创建 Word 文档。在我的文档中,我必须插入项目符号列表,列表中的某些元素必须带有下划线。我该怎么做?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(5)
OpenXML 中的列表有点令人困惑。
有一个 NumberingDefinitionsPart 描述了文档中的所有列表。它包含有关列表应如何显示的信息(项目符号、编号等),并为每个列表分配 ID。
然后,在 MainDocumentPart 中,对于要创建的列表中的每个项目,添加一个新段落并将所需列表的 ID 分配给该段落。
因此要创建一个项目符号列表,例如:
您首先必须创建 NumberingDefinitionsPart:
然后像平常一样创建 MainDocumentPart,除了在段落属性中分配编号 ID:
OpenXML 参考指南第 2.9 节。
Lists in OpenXML are a little confusing.
There is a NumberingDefinitionsPart that describes all of the lists in the document. It contains information on how the lists should appear (bulleted, numbered, etc.) and also assigns and ID to each one.
Then in the MainDocumentPart, for every item in the list you want to create, you add a new paragraph and assign the ID of the list you want to that paragraph.
So to create a bullet list such as:
You would first have to create a NumberingDefinitionsPart:
Then you create the MainDocumentPart as you normally would, except in the paragraph properties, assign the numbering ID:
There is a better explanation of the options available in the OpenXML reference guide in Section 2.9.
我想要一种可以让我向文档添加多个项目符号列表的东西。在用头撞桌子一段时间后,我成功地将一堆不同的帖子结合起来,并使用 Open XML SDK 2.0 Productity Tool 检查我的文档,并找出了一些东西。它生成的文档现已通过版本 2.0 的验证以及 SDK 生产力工具的 2.5。
这是代码;希望它可以节省一些人的时间并减少麻烦。
用法:
使用语句:
代码
I wanted something that would allow me to add more than one bullet list to a document. After banging my head against my desk for a while, I managed to combine a bunch of different posts and examine my document with the Open XML SDK 2.0 Productity Tool and figured some stuff out. The document it produces now passes validation for by version 2.0 and 2.5 of the SDK Productivity tool.
Here is the code; hopefully it saves someone some time and aggravation.
Usage:
Using statements:
Code
Adam 上面的答案是正确的,只是它是 new NumberingInstance( 而不是 new Num( 如评论中所述。
此外,如果您有多个列表,则应该有多个编号元素(每个元素都有自己的 id,例如 1、2、3 等 - - 文档中的每个列表一个,这对于项目符号列表来说似乎不是问题,但编号列表将继续使用相同的编号序列(而不是从 1 重新开始),因为它会认为它是相同的。列表中的 NumberingId 必须像这样引用:
Level 元素的子元素将对项目符号的类型和缩进产生影响。
在我将此元素添加到 Level 元素之前,我的项目符号太小:
在我将此元素也添加到 Level 元素之前,缩进是一个问题:
Adam's answer above is correct except it is new NumberingInstance( instead of new Num( as noted in a comment.
Additionally, if you have multiple lists, you should have multiple Numbering elements (each with it's own id eg 1, 2, 3 etc -- one for each list in the document. This doesn't seem to be a problem with bullet lists, but numbered lists will continue using the same numbering sequence (as opposed to starting over again at 1) because it will think that it's the same list. The NumberingId has to be referenced in your paragraph like this:
Children of the Level element will have an effect on the type of bullet, and the indentation.
My bullets were too small until I added this to the Level element:
Indentation was a problem until I added this element to the Level element as well:
如果您像我一样 - 从模板创建文档,那么您可能需要使用此代码来处理这两种情况 - 当您的模板包含或不包含任何编号定义时:
And if you are like me - creating a document from a template, then you may want to use this code, to handle both situations - when your template does or does not contain any numbering definitions:
不确定这是否对任何人有帮助,但这是我用于插入项目符号列表的片段。
创建word处理文档和word文档正文
然后获取插入索引。这是Word文档中的占位符文本,因此您可以插入到Word文档中的正确位置。
然后,您可以调用此方法将两个项目符号插入到 Word 文档中以进行刻字。
然后您可以删除此后的占位符文本。
Not sure if this helps anyone, but here is my snippet for inserting a list of bullets.
Create the word processing document and word document body
Then get the insert index. This is placeholder text inside the word document, so you can insert into the correct place in the word document.
You can then call this method to insert into the word document in both bullet points for lettering.
You can then remove the placeholder text after with this.