怎样在word中设置文档结构图和目录?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样在word中设置文档结构图和目录?相关的知识,希望对你有一定的参考价值。

参考技术A 一、用大纲级别结合文档结构图快速定位  我们在Word中打开一篇文档,在菜单栏上选择“视图→文档结构图”,如果这篇文档已经设置好各级大纲级别,我们可以在左边的文档结构图中看见很多分好级别的目录。这时如果我们在左侧的文档结构图中点击一个条目,那么在右侧的文档中,光标就会自动定位到相应的位置。  利用文档结构图的这一功能查阅文档(特别是长文档)的时候会非常方便。  这种排列有从属关系,也就是说,大纲级别为2级的段落从属于1级,3级的段落从属于2级……9级的段落从属于8级。在文档结构图中,点击条目前面的“-”号或 “+”号,可以把有从属关系的条目折叠或展开,这种方法与Windows资源管理器左窗格中的目录和子目录的操作方法有点相似。  明白了上述原理,我们就可以给文档中的章节标题设置好大纲级别,以便利用文档结构图快速查看文档。在实际应用中,我发现有些人利用格式刷给章节标题设置大纲级别,这的确是一种不错的方法,但这并不是最好的方法。因为我们一般都是用“样式”来给文档排版的,而段落的“样式”中本身就包括了大纲级别的设置,所以,我们只要给段落应用了正确的“样式”,段落的大纲级别也就自动地设置了。二、在大纲视图中设置大纲级别  现在我们打开一篇文档,点击水平滚动条上的“大纲视图”按钮,把文档切换到大纲视图。在大纲视图中,在文档中的每一段落前面都显示有一个标记,其中小正文形的标记表示该段落的大纲级别为“正文本文”,类似“+”的标记表示该段落的大纲级别非“正文文本”。我们把光标定位在一个“+”标记的段落前,在大纲工具栏上点击“折叠”按钮,可以把从属在它下面的其它级别的段落和“正文文本”逐层折叠起来,完全折叠后,该段落的下面会出现一条类似波浪线的下划线。同样的道理,点击工具栏上的“展开”按钮,也可以把从属在该段落下面的其它段落逐层展开。  在大纲视图中,除了可以使用折叠和展开的方法快速地查阅文档,我们还可以利用它重新组织文档和快速地改变段落的大纲级别。  ⒈重新组织文档  先把段落下面的内容完全折叠起来,单击“将文档另存”前面的“+”标记选中这个段落,然后点击大纲工具栏上的“向下移动”按钮,这时,文档中的“将文档另存”和下面的“取消嵌入TrueType字体”就互相交换了位置。  点击大纲工具栏上的“展开”按钮,展开这两个段落下面的内容,你会惊奇地发现,下移后的“将文档另存”下面的内容还是原来的内容,原来排在“将文档另存”下面的“取消嵌入TrueType字体”中的全部内容,现在也排在了“将文档另存”的上面。利用这种方法,可以快速地重新组织文档内各部分的内容,这可比用剪切、粘贴的方法方便多了。⒉改变段落的大纲级别  把光标定位在一个大纲级别为“正文文本”的段落前,在大纲工具栏上点击“提升”按钮,这个段落就和就和它的上一级段落同级了;把光标定位在一个大纲级别为1级的段落前,点击大纲工具栏上的“降低”按钮,这个段落的大纲级别就降低了一级,点击工具栏上的“降为正文”按钮,这个段落的大纲级别就变为“正文文本”了。                更多详细内容请见:本回答被提问者采纳

在 OpenXml 复选框 word2013 中设置值

【中文标题】在 OpenXml 复选框 word2013 中设置值【英文标题】:Setting the value in OpenXml checkbox word2013 【发布时间】:2015-08-19 16:39:53 【问题描述】:

所以我有一个正在通过 WPF(C#) 应用程序编辑的文档。 我已成功编辑纯文本内容控件,但现在我卡住了选中/取消选中表单中的复选框。

我成功找到了复选框并设置了值并保存了文档,但是当我打开它时,设置为 true 的复选框从未在 word 文档中被选中。

这是我用来操作复选框的代码。 注意:我在标签级别访问复选框,因此 field.parent.parent

private static void SetCheckBox(OpenXmlElement field, bool isChecked)

    var checkBox = field.Parent.Parent.Descendants<SdtContentCheckBox>().ToList();
    foreach (var check in checkBox)
    
        if (isChecked)
        
            check.Checked.Val = OnOffValues.True;
        
        else
        
            check.Checked.Val = OnOffValues.False;
        
        MessageBox.Show(check.Checked.Val);
    

当我在 MessageBox 中显示值时,它们显示 0/1 表示真/假。所以它们实际上正在设置中。

我这样做正确吗?

【问题讨论】:

【参考方案1】:

看来不仅必须设置复选框的Checked 值,还必须更改Text 值。

所以我最近的代码也有一些改动,但它改变了复选框的麻烦方面。

代码:

private static void SetCheckBox(OpenXmlElement field, bool isChecked)

    if (isChecked)
    
        field.Parent.Parent.FirstChild.GetFirstChild<SdtContentCheckBox>().Checked.Val = OnOffValues.True;
        field.Parent.Parent.Descendants<Run>().First().GetFirstChild<Text>().Text = "☒";
    
    else
    
        field.Parent.Parent.FirstChild.GetFirstChild<SdtContentCheckBox>().Checked.Val = OnOffValues.False;
        field.Parent.Parent.Descendants<Run>().First().GetFirstChild<Text>().Text = "☐";
    

浓缩:

private static void SetCheckBox(OpenXmlElement field, bool isChecked)

    field.Parent.Parent.FirstChild.GetFirstChild<SdtContentCheckBox>().Checked.Val = isChecked ? OnOffValues.True : OnOffValues.False;
    field.Parent.Parent.Descendants<Run>().First().GetFirstChild<Text>().Text = isChecked ? "☒" : "☐";

【讨论】:

这能解决你的问题吗? @MaximePorté 是的 如果此代码解决了问题,请将其标记为答案。【参考方案2】:

解决问题的另一个版本的代码:

    private void ResetFile(string filePath)
    
        using (WordprocessingDocument doc = WordprocessingDocument.Open(filePath, true))
        
            try
            
                string uncheckValue = "☐";
                string checkValue = "☒";

                foreach (SdtContentCheckBox ctrl in doc.MainDocumentPart.Document.Body.Descendants<SdtContentCheckBox>())
                
                    if (ctrl.Checked.Val == OnOffValues.One)
                    
                        ctrl.Checked.Val = OnOffValues.Zero;
                        if (ctrl.Parent.Parent.Descendants<SdtContentRun>().ToList().Count > 0)
                        
                            SdtContentRun text = (SdtContentRun)ctrl.Parent.Parent.Descendants<SdtContentRun>().ToList()[0];
                            text.InnerXml = text.InnerXml.Replace(checkValue, uncheckValue);
                        
                    
                

                doc.MainDocumentPart.Document.Save();
            
            catch  
        
    

【讨论】:

以上是关于怎样在word中设置文档结构图和目录?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Word中设置首行缩进2字符

怎样在JFrame中设置背景图片

如何在word文档中设置手指型图标

如何在XCode中设置OpenCV

在 OpenXml 复选框 word2013 中设置值

Word VBA 的主要对象体系结构是怎样的?编辑中常用对象都有哪些?