`

C# 操作Word目录——生成、删除目录

阅读更多

目录,是指书籍、文档正文前所载的目次,将主要内容以一定次第顺序编排,起指导阅读、检索内容的作用。在Word中创建目录前,需要设置文档相应文字或者段落的大纲级别,根据设定的大纲级别可创建文档的交互式大纲,即在Word文档左侧导航窗口中可显示为如同目录的标题大纲,通过点击相应级别的内容,可跟踪阅读位置或者快速移动相应的文档内容。下面将介绍如何通过C# 编程操作Word目录。

 生目录时,这里考虑两种情况:

  • 文档没有设置大纲级别,生成目录时需手动设置
  • 文档已有大纲级别,此时,通过使用域代码来创建目录
使用工具:Free Spire.Doc for .NET(免费版)

dll文件引用:安装后,注意在程序中添加引用Spire.Doc.dll(dll可在安装路径下的bin文件夹中获取)


 

一、生成目录

1)手动设置大纲级别,生成目录

 

using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System.Drawing;

namespace CreateToc_Doc
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建Document对象,加载Word文档
            Document doc = new Document();
            doc.LoadFromFile("test.docx");

            //插入一个段落作为第一段
            Paragraph paraInserted = new Paragraph(doc);
            TextRange textRange = paraInserted.AppendText("目 录");
            textRange.CharacterFormat.Bold = true;
            textRange.CharacterFormat.TextColor = Color.CadetBlue;
            doc.Sections[0].Paragraphs.Insert(0, paraInserted);
            paraInserted.Format.HorizontalAlignment = HorizontalAlignment.Center;

            //在第一段添加目录表
            doc.Sections[0].Paragraphs[0].AppendTOC(1,2);           

            //设置指定段落的大纲级别
            doc.Sections[0].Paragraphs[1].ApplyStyle(BuiltinStyle.Heading1);
            doc.Sections[0].Paragraphs[4].ApplyStyle(BuiltinStyle.Heading2);
            doc.Sections[0].Paragraphs[6].ApplyStyle(BuiltinStyle.Heading2);
            doc.Sections[0].Paragraphs[8].ApplyStyle(BuiltinStyle.Heading2);
            doc.Sections[0].Paragraphs[11].ApplyStyle(BuiltinStyle.Heading1);
            doc.Sections[0].Paragraphs[13].ApplyStyle(BuiltinStyle.Heading1);
            
            //更新目录
            doc.UpdateTableOfContents();          

            //保存文档
            doc.SaveToFile("result.docx", FileFormat.Docx2010);
            System.Diagnostics.Process.Start("result.docx");
        }
    }
}

 目录生成效果:

 



 

2)使用域代码生成目录

 

 

using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System.Drawing;

namespace CreateToc_Doc
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建Document对象,加载Word文档
            Document doc = new Document();
            doc.LoadFromFile("sample.docx");

            //插入一个段落作为第一段
            Paragraph paraInserted = new Paragraph(doc);
            TextRange textRange = paraInserted.AppendText("目 录");
            textRange.CharacterFormat.Bold = true;
            textRange.CharacterFormat.TextColor = Color.CadetBlue;
            doc.Sections[0].Paragraphs.Insert(0, paraInserted);
            paraInserted.Format.HorizontalAlignment = HorizontalAlignment.Center;

            //使用域代码自定义目录
            TableOfContent toc = new TableOfContent(doc, "{\\o \"1-3\" \\h \\z \\u}");
            doc.Sections[0].Paragraphs[0].AppendTOC(1, 3); 
            
            //更新目录
            doc.UpdateTableOfContents();          

            //保存文档
            doc.SaveToFile("output.docx", FileFormat.Docx2010);
            System.Diagnostics.Process.Start("output.docx");
        }
    }
}

 目录生成效果:

 



 

二、删除目录

using Spire.Doc;
using System.Text.RegularExpressions;

namespace RemoveTOC_Doc
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建Document对象,并加载含有目录的Word文档 
            Document doc = new Document();
            doc.LoadFromFile("Result.docx", FileFormat.Docx2010);

            //获取body
            Body body = doc.Sections[0].Body;

            //移除目录
            Regex regex = new Regex("TOC\\w+");
            for (int i = 0; i < body.Paragraphs.Count; i++)
            {
                if (regex.IsMatch(body.Paragraphs[i].StyleName))
                {
                    body.Paragraphs.RemoveAt(i);
                    i--;
                }
            }

            //保存文档
            doc.SaveToFile("RemoveTOC.docx", FileFormat.Docx2010);
            System.Diagnostics.Process.Start("RemoveTOC.docx");
        }
    }
}

 

(本文完)

 

 

 

 

 

  • 大小: 8.7 KB
  • 大小: 88.3 KB
  • 大小: 70.5 KB
  • 大小: 97.7 KB
0
0
分享到:
评论

相关推荐

    C#操作Word——C#向Word文档中写入文字

    C#操作Word文档,实现文字写入 本实例主要讲述了使用C#操作Word文档,实现文字写入功能。通过使用Word文档中的Range属性,能够轻松地向Word文档中添加文本内容。本实例中,首先创建了一个Windows窗体应用程序,然后...

    DocX类操作WORD文档——把图片插入到书签指定位置

    在.NET开发环境中,处理Microsoft Office文档,特别是Word文档时,我们常常会遇到需要对文档进行各种操作的需求,比如插入图片。DocX是一个轻量级、易于使用的库,它允许开发者在不依赖Microsoft Word的情况下,对...

    用C#动态生成Word文档并将数据填入Word表格中

    ### 使用C#动态生成Word文档并将数据填入Word表格中的技术要点 在现代办公环境中,自动化处理文档变得越来越重要。特别是在需要频繁生成报告、发票或其他标准化格式文档的情况下,利用编程语言来实现文档的自动化...

    使用C#,生成特定格式Word文档

    首先,我们需要了解C#与Word交互的基础——Microsoft.Office.Interop.Word命名空间。这个命名空间包含了对Word对象模型的访问,让我们能够控制Word应用程序、文档、段落、样式等元素。在C#项目中,我们需要添加对...

    C#按格式导出word(通过word模版标签替换导出)

    根据给定的信息,本文将详细解释如何利用C#语言结合Microsoft Office Interop Word库实现基于模板的Word文档自动生成及标签替换的过程。 ### 一、背景介绍 在实际开发过程中,常常需要根据一定的数据模板来生成...

    PageOffice 批量生成Word文件

    本示例主要讲解如何利用PageOffice的FileMaker控件来批量生成Word文件,这对于需要大批量创建Word文档的场景非常有用,比如报告生成、数据导出等。 首先,我们要了解PageOffice的核心组件——FileMaker。FileMaker...

    C#全能速查宝典

    1.4.34 Random类——伪随机数生成器 75 1.4.35 Regex类——正则表达式 76 1.4.36 Split方法——分割字符串 78 1.4.37 String类——字符串 79 1.4.38 StringBuilder类——可变字符串 82 1.4.39 Substring方法——截取...

    CalligraphyUtil.zip C#多页打印+预览的demo,也是一个描红字帖制作的软件

    本篇将深入探讨如何利用C#实现多页打印与预览功能,并以此为基础,介绍一个特殊的案例——创建描红字帖制作软件。 一、C#中的打印技术 在C#中,打印功能主要通过System.Drawing.Printing命名空间中的类来实现。...

    txt、word、ppt转换swf

    总的来说,实现"txt、word、ppt转换swf"的目标,需要掌握.NET框架下的文件操作、文档解析、SWF生成以及可能的Flash编程技术。通过这种方式,不仅可以保护知识产权,还能提供一种在线查看和分享文档的安全方式。

    深入浅出设计模式(中文版电子版)

    5.6.4Java实例——多次Undo(取消)操作 231 5.6.5优势和缺陷 236 5.6.6应用情景 236 5.7ObserverPattern(观察者模式) 236 5.7.1定义 236 5.7.2现实例子——拉登现身了 238 5.7.3C#实例——猫和老鼠 238 ...

    自然语言理解——文本分类系统

    在这个上下文中,"自然语言理解——文本分类系统"是一个利用C#编程语言实现的项目,旨在帮助开发者了解如何处理文本数据并进行有效的分类。文本分类是NLU中的一个关键任务,它可以用于垃圾邮件过滤、情感分析、新闻...

    Aspose.Words.rar

    这个RAR压缩包包含了Aspose.Words的核心组件——Aspose.Words.dll,这是一个动态链接库,允许开发者在他们的C#应用程序中直接操作Word文档,而无需依赖Microsoft Word软件。 1. **Aspose.Words.dll**: 这是Aspose....

    WPF导出Word.rar

    首先,为了在WPF应用中与Microsoft Word进行交互,我们需要利用Microsoft.Office.Interop.Word库,这是.NET Framework中的一个COM互操作组件,允许我们使用C#或VB.NET等.NET语言调用Word的API。然而,描述中指出,...

    数据库表结构说明文档自动生成工具

    该工具利用.NET Framework 4.0的类库来实现对数据库的连接、查询和操作,以及文档生成功能。 3. **数据库支持**:工具支持三种主流的数据库管理系统——MySQL、SQL Server和Oracle。这涵盖了广泛的应用场景,无论是...

    c#编程的简历管理系统

    2. **简历生成**:利用C#的数据绑定和模板引擎,系统能自动生成格式统一、内容完整的PDF或Word简历文档。这不仅减轻了求职者的制作负担,也便于企业进行批量化处理和存储。 3. **简历打印**:集成Windows打印功能,...

    Generate.zip

    《使用C#自动生成批量文件——以Generate.zip为例》 在信息技术领域,高效的数据处理和文件操作能力是程序员必备的技能之一。本文将基于“Generate.zip”这个压缩包文件,探讨如何利用C#编程语言自动生成大量Word、...

    动软代码生成器(方便使用,节省时间)

    《动软代码生成器——高效开发的利器》 在IT行业中,开发效率是决定项目进度和质量的关键因素之一。为了提升开发效率,各种自动化工具应运而生,其中,“动软代码生成器”就是一款非常实用的工具,尤其对于使用C#...

    LIS源码-WORD.rar

    《LIS源码分析——基于WORD文档》 在IT领域,源码是理解软件工作原理的关键,特别是对于医疗信息系统(Laboratory Information System,简称LIS)这样的专业应用来说,源码分析更是至关重要。"LIS源码-WORD.rar"这...

    基于C#与ArcEngine的栅格插值方法

    本项目“基于C#与ArcEngine的栅格插值方法”聚焦于一种关键的GIS分析技术——栅格插值,通过C#编程语言实现,为用户提供了一种工具来估算空间数据的连续性。 栅格插值是将离散的点数据转换为连续的栅格表面的过程,...

Global site tag (gtag.js) - Google Analytics