`

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#全能速查宝典

    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方法——截取...

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

    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 ...

    语音朗读组件库-可自定义加工自已的语音库

    独特的文本语音识别技术,集成从语音录制、制作语音库(可自制各种方言版本)、测试语音库、朗读文本等功能。支持同时可以采用100种语音库混播功能。...———————————————— 版权声明:本文为

    asp.net知识库

    发布Oracle存储过程包c#代码生成工具(CodeRobot) New Folder XCodeFactory3.0完全攻略--序 XCodeFactory3.0完全攻略--基本思想 XCodeFactory3.0完全攻略--简单示例 XCodeFactory3.0完全攻略--IDBAccesser ...

    VSTO 两个实例

    所用语言C# 两个VSTO开发实例 Task1——行求和,然后画出曲线图 随机生成100行100列个数,每个数位为0~9的整数,然后求每行的和,最后调用Chart,画出线状图。 Task2——求TFIDF值。 对于一个workbook有10个sheet...

    初级java笔试题-awesome-stars:我的GitHub星星的精选列表!

    生成者 内容 自动热键 —— C - 官方 QEMU 镜像。 请参阅如何向 QEMU 提交更改。 拉取请求被忽略。 请仅使用来自 QEMU 网站的发布 tarball。 - 跨平台异步 I/O - 实时性能监控,做得对! - 类似于 ack 的代码搜索...

    Whole.Tomato.Visual.Assist.X.10.7.1925.0 2012年12月14日 破解补丁 dll Cracked 最新破解版

     拼写检查:在您输入代码的同时进行检查,并且可以看到同Microsoft Word相似的红色下划线。含有Spell check comments and strings,另外,Spell check code可以检查错误的输入符号。  拓展了基本编辑:对编辑器...

    Visual assist X 1626(带注册机)

     拼写检查:在您输入代码的同时进行检查,并且可以看到同Microsoft Word相似的红色下划线。含有Spell check comments and strings,另外,Spell check code可以检查错误的输入符号。  拓展了基本编辑:对编辑器...

    Whole.Tomato.Visual.Assist.X.10.6.1823 2010年6月最新破解版

     拼写检查:在您输入代码的同时进行检查,并且可以看到同Microsoft Word相似的红色下划线。含有Spell check comments and strings,另外,Spell check code可以检查错误的输入符号。  拓展了基本编辑:对编辑器...

    Whole.Tomato.Visual.Assist.X.v10.6.1822 2010年4月最新破解补丁

     拼写检查:在您输入代码的同时进行检查,并且可以看到同Microsoft Word相似的红色下划线。含有Spell check comments and strings,另外,Spell check code可以检查错误的输入符号。  拓展了基本编辑:对编辑器...

    Google_MapReduce中文版-系统架构

    MapReduce是一个编程模型,也是一个处理和生成超大数据集的算法模型的相关实现。用户首先创建 一个Map函数处理一个基于key/value pair的数据集合,输出中间的基于key/value pair的数据集合;然 后再创建一个Reduce...

    几个重要的c程序源码.rar

    2012-06-11 16:03 0 1.txt 2012-06-11 15:20 42,528 c#仿QQ好友界面.rar 2012-06-11 15:22 216,281 ChineseChessV1.rar ...2012-06-11 15:38 299,008 (HDUACM2010版_06)并查集(最小生成树).ppt

Global site tag (gtag.js) - Google Analytics