C# 操作Word书签,插入、删除书签

概要

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

1. 插入书签

2. 插入图片到书签

3. 插入表格到书签

4. 删除书签

  4.1 删除书签

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

 

 

使用工具

 

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



 

【示例1】插入书签

C#

C#代码  收藏代码

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

 

测试效果



 

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

C#

C#代码  收藏代码

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

 图片插入效果

 



 

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

C#

C#代码  收藏代码

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

 表格插入效果

 



 

【示例4】删除书签

C#

C#代码  收藏代码

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

 书签删除效果前后对比:

测试文档如下



 删除书签后:

 


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

猜你喜欢

转载自blog.csdn.net/weixin_42672054/article/details/81742628