概要

书签的设置可以帮助我们快速的定位某段文字,使用起来很方便,也很节省时间。对word文档中的书签操作,比较常见的是直接对某段文字插入书签,在下面的示例中,除了介绍插入书签的方法外,也将介绍操作书签的一些拓展方法,包括插入图片、表格到书签位置所在的段落、删除书签等。示例要点如下:

1. 插入书签

2. 插入图片到书签

3. 插入表格到书签

4. 删除书签

4.1 删除书签

4.2 删除书签所在的段落文字

使用工具

  • Free Spire.Doc for .NET 6.3 (社区版)
  • Visual Studio

ps:下载安装该类库后,注意添加引用Spire.Doc.dl到项目程序,dll文件可在安装路径的Bin文件夹中获取。

【示例1】插入书签

C#

C#代码  

  1. using System;
  2. using Spire.Doc;
  3. using Spire.Doc.Documents;
  4. namespace WordBookmark
  5. {
  6. class Bookmark
  7. {
  8. static void Main(string[] args)
  9. {
  10. //实例化Document类,加载文档
  11. Document document = new Document();
  12. document.LoadFromFile("test.docx");
  13. //插入书签到指定段落,并命名书签
  14. Section section = document.Sections[0];
  15. section.Paragraphs[1].AppendBookmarkStart("Bookmark1");
  16. section.Paragraphs[2].AppendBookmarkEnd("Bookmark1");
  17. //保存并打开文档
  18. document.SaveToFile("InsertBookmark.docx", FileFormat.Docx);
  19. System.Diagnostics.Process.Start("InsertBookmark.docx");
  20. }
  21. }
  22. }

测试效果

【示例2】插入图片到书签所在段落

C#

C#代码  

  1. using Spire.Doc;
  2. using Spire.Doc.Documents;
  3. using Spire.Doc.Fields;
  4. using System.Drawing;
  5. namespace InsertImgToBookmark_Doc
  6. {
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. //创建实例,加载文档
  12. Document document = new Document();
  13. document.LoadFromFile("test.docx");
  14. //实例化BookmarksNavigator类,指定需要添加图片的书签“Bookmark1”
  15. BookmarksNavigator bn = new BookmarksNavigator(document);
  16. bn.MoveToBookmark("Bookmark1", truetrue);
  17. //添加段落,加载图片并插入到段落
  18. Section section0 = document.AddSection();
  19. Paragraph paragraph = section0.AddParagraph();
  20. Image image = Image.FromFile("img.png");
  21. DocPicture picture = paragraph.AppendPicture(image);
  22. bn.InsertParagraph(paragraph);
  23. document.Sections.Remove(section0);
  24. //保存文档并打开
  25. string output = "result.docx";
  26. document.SaveToFile(output, FileFormat.Docx);
  27. System.Diagnostics.Process.Start(output);
  28. }
  29. }
  30. }

 图片插入效果

【示例3】插入表格到书签所在段落

C#

C#代码  

  1. using Spire.Doc;
  2. using Spire.Doc.Documents;
  3. using System.Data;
  4. namespace InsertTableToBookmark_Doc
  5. {
  6. class Program
  7. {
  8. static void Main(string[] args)
  9. {
  10. //创建文档,加载文件
  11. Document doc = new Document();
  12. doc.LoadFromFile("test.docx");
  13. //创建Table对象
  14. Table table = new Table(doc, true);
  15. //创建模拟数据
  16. DataTable dt = new DataTable();
  17. dt.Columns.Add("PI", typeof(string));
  18. dt.Columns.Add("Type", typeof(string));
  19. dt.Columns.Add("Nov.", typeof(string));
  20. dt.Columns.Add("YTD", typeof(string));
  21. dt.Rows.Add(new string[] { "PI","Type", "Nov.", "YTD" });
  22. dt.Rows.Add(new string[] { "1", "BAIC EC-Series", "15.719", "64.910" });
  23. dt.Rows.Add(new string[] { "2", "Tesla Model S", "3.889", "46.951" });
  24. dt.Rows.Add(new string[] { "3", "Nissan Leaf", "2.817", "46.423" });
  25. //将数据填充至表格
  26. table.ResetCells(dt.Rows.Count, dt.Columns.Count);
  27. for (int i = 0; i < dt.Rows.Count; i++)
  28. {
  29. for (int j = 0; j < dt.Columns.Count; j++)
  30. {
  31. table.Rows[i].Cells[j].AddParagraph().AppendText(dt.Rows[i][j].ToString());
  32. }
  33. }
  34. //获取指定书签位置
  35. BookmarksNavigator navigator = new BookmarksNavigator(doc);
  36. navigator.MoveToBookmark("origin2");
  37. //将表格添加至TextBodyPart
  38. TextBodyPart part = navigator.GetBookmarkContent();
  39. part.BodyItems.Add(table);
  40. //替换书签内容
  41. navigator.ReplaceBookmarkContent(part);
  42. //保存并打开文件
  43. doc.SaveToFile("output.docx", FileFormat.Docx2013);
  44. System.Diagnostics.Process.Start("output.docx");
  45. }
  46. }
  47. }

表格插入效果

【示例4】删除书签

C#

C#代码  

  1. using Spire.Doc;
  2. using Spire.Doc.Documents;
  3. namespace Removing
  4. {
  5. class Program
  6. {
  7. static void Main(string[] args)
  8. {
  9. //实例化Document类,加载文档
  10. Document doc = new Document();
  11. doc.LoadFromFile("sample.docx");
  12. //创建BookmarksNavigator实例
  13. BookmarksNavigator navigator = new BookmarksNavigator(doc);
  14. //指向特定的书签
  15. navigator.MoveToBookmark("origin2");
  16. //删除书签中的内容
  17. navigator.DeleteBookmarkContent(false);
  18. //删除书签
  19. doc.Bookmarks.Remove(doc.Bookmarks.FindByName("bookmark1"));
  20. //保存并打开文档
  21. doc.SaveToFile("RemoveBookmark.docx", FileFormat.Docx);
  22. System.Diagnostics.Process.Start("RemoveBookmark.docx");
  23. }
  24. }
  25. }

书签删除效果前后对比:

测试文档如下


 删除书签后:

文章转自http://miaonly.iteye.com/blog/2428804

C# 操作Word书签,插入、删除书签相关推荐

  1. C#操作Word模板并且修改书签

    原文地址:C#操作Word模板并且修改书签作者:大坏蛋 //生成WORD程序对象和WORD文档对象 Microsoft.Office.Interop.Word.Application appWord ...

  2. java读写word模板_Java操作Word模板插入列表

    Java操作Word模板插入列表 通过poi操作word,插入各种编号的列表,包括数字,字母,罗马字符,自定义任意字符.下面的示例就用了音乐符♬. 1.制作模板,插入列表使用语法*,模板内容为{{*n ...

  3. QT操作Word,插入表格

    最近在做QT导出word报表,发现网上的资源不是很多,也浪费了很多时间,我自己做了一份demo,将会详细讲述如何做出需要样式的报表.在网上很容易查到java或者其他语言操作word的接口函数,但是QT ...

  4. C++操作word:插入文字、图片、表格,设置样式字体

    想要控制word文档,向word写入文字,图片,表格等并控制其格式,可以引入第三方库,#include "msword.h",网上的资料很多,在此不再赘述.下面封装好的代码,,很简 ...

  5. Java 操作Word书签(一):添加、删除、读取书签

    Word中,书签功能常用于查找.定位.标记特定字符或段落,对于篇幅较大的文档,此功能非常实用.下面,将介绍通过Java程序来添加及删除Word书签的方法.示例要点包括: 1. 添加书签 1.1 给指定 ...

  6. java书签_Java 操作Word书签(一):添加、删除、读取书签

    Word中,书签功能常用于查找.定位.标记特定字符或段落,对于篇幅较大的文档,此功能非常实用.下面,将介绍通过Java程序来添加及删除Word书签的方法.示例要点包括: 1. 添加书签 1.1 给指定 ...

  7. 修改word中插入-书签快捷键:Ctrl+Shift+F5快捷键的方式

    公司在做各种月报分析时,需要在word中插入大量书签来代表数据源,但每次插入都得点开插入-书签对话框实在太麻烦了,搜了下word中默认的插入-书签快捷键为:Ctrl+Shift+F5,但这个快捷键还是 ...

  8. java pdf 书签_Java PDF书签——添加、编辑、删除、读取书签

    本文介绍通过Java程序来操作PDF书签,根据对书签的不同操作要求,分以下情况来介绍: 1. 添加书签(包括添加一级书签.多级子书签) 3. 删除书签(包括删除所有书签.删除子书签等) 4. 读取书签 ...

  9. C# 操作Word书签(一)插入、删除书签

    概要 书签的设置可以帮助我们快速的定位某段文字,使用起来很方便,也很节省时间.对word文档中的书签操作,比较常见的是直接对某段文字插入书签,在下面的示例中,除了介绍插入书签的方法外,也将介绍操作书签 ...

最新文章

  1. 【FFmpeg】打印日志函数分析(可以根据不同级别打印不同颜色的日志)
  2. PokeCats开发者日志(一)
  3. Win64 驱动内核编程-28.枚举消息钩子
  4. STM32系列--初识寄存器1
  5. Objective-C中MRC和ARC的自我理解
  6. 专科程序员吐槽:学历是硬伤!问:想进大厂试试必须学历够格么?
  7. @ExceptionHandler
  8. pythonsklearn乳腺癌数据集_Python的Sklearn库中的数据集
  9. C#正则表达式判断输入日期格式是否正确
  10. 华为机试题2[编程题] 汽水瓶
  11. 删数问题 详解(C++)
  12. CSDN没有C币如何下载文章?
  13. 交通信息工程 实验四:交通仿真实验(二)
  14. blackman窗 matlab,【matlab】矩形窗/三角窗/hanning窗/hamming窗/blackman窗的频率响应图...
  15. Execution failed for task ':app:processDebugResources'. No slave process to process jobs, aborting
  16. 商业智能,数据仓库,ETL,数仓调度工具informatica介绍手账(二)
  17. 推荐用于环境识别的机器人摄像头
  18. 绝对位置运动指令(MoveAbsJ)
  19. Zabbix5.0网易邮箱163告警详细步骤
  20. Flink前世今生和原理

热门文章

  1. springboot自定义消息转换器HttpMessageConverter
  2. python怎么画折线图
  3. ArcGIS API for JavaScript字体库下载及本地字体库配置
  4. 罗技F710使用笔记
  5. python使用虚拟内存_python – 为什么导入numpy在Linux上添加1 GB的虚拟内存?
  6. python函数var是求什么_copula函数及其Var计算的Python实现
  7. STM32CubeMX学习笔记——STM32H743_硬件I2C
  8. Vue2.x项目兼容IE9的常见问题及解决方案
  9. 英语文献PDF全文翻译,附网站,无需注册
  10. VUE+webrtc-streamer实现实时视频播放(监控设备-rtsp)