C# 操作Word书签,插入、删除书签
概要
书签的设置可以帮助我们快速的定位某段文字,使用起来很方便,也很节省时间。对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#
- using System;
- using Spire.Doc;
- using Spire.Doc.Documents;
- namespace WordBookmark
- {
- class Bookmark
- {
- static void Main(string[] args)
- {
- //实例化Document类,加载文档
- Document document = new Document();
- document.LoadFromFile("test.docx");
- //插入书签到指定段落,并命名书签
- Section section = document.Sections[0];
- section.Paragraphs[1].AppendBookmarkStart("Bookmark1");
- section.Paragraphs[2].AppendBookmarkEnd("Bookmark1");
- //保存并打开文档
- document.SaveToFile("InsertBookmark.docx", FileFormat.Docx);
- System.Diagnostics.Process.Start("InsertBookmark.docx");
- }
- }
- }
测试效果:
【示例2】插入图片到书签所在段落
C#
- using Spire.Doc;
- using Spire.Doc.Documents;
- using Spire.Doc.Fields;
- using System.Drawing;
- namespace InsertImgToBookmark_Doc
- {
- class Program
- {
- static void Main(string[] args)
- {
- //创建实例,加载文档
- Document document = new Document();
- document.LoadFromFile("test.docx");
- //实例化BookmarksNavigator类,指定需要添加图片的书签“Bookmark1”
- BookmarksNavigator bn = new BookmarksNavigator(document);
- bn.MoveToBookmark("Bookmark1", true, true);
- //添加段落,加载图片并插入到段落
- Section section0 = document.AddSection();
- Paragraph paragraph = section0.AddParagraph();
- Image image = Image.FromFile("img.png");
- DocPicture picture = paragraph.AppendPicture(image);
- bn.InsertParagraph(paragraph);
- document.Sections.Remove(section0);
- //保存文档并打开
- string output = "result.docx";
- document.SaveToFile(output, FileFormat.Docx);
- System.Diagnostics.Process.Start(output);
- }
- }
- }
图片插入效果:
【示例3】插入表格到书签所在段落
C#
- using Spire.Doc;
- using Spire.Doc.Documents;
- using System.Data;
- namespace InsertTableToBookmark_Doc
- {
- class Program
- {
- static void Main(string[] args)
- {
- //创建文档,加载文件
- Document doc = new Document();
- doc.LoadFromFile("test.docx");
- //创建Table对象
- Table table = new Table(doc, true);
- //创建模拟数据
- DataTable dt = new DataTable();
- dt.Columns.Add("PI", typeof(string));
- dt.Columns.Add("Type", typeof(string));
- dt.Columns.Add("Nov.", typeof(string));
- dt.Columns.Add("YTD", typeof(string));
- dt.Rows.Add(new string[] { "PI","Type", "Nov.", "YTD" });
- dt.Rows.Add(new string[] { "1", "BAIC EC-Series", "15.719", "64.910" });
- dt.Rows.Add(new string[] { "2", "Tesla Model S", "3.889", "46.951" });
- dt.Rows.Add(new string[] { "3", "Nissan Leaf", "2.817", "46.423" });
- //将数据填充至表格
- table.ResetCells(dt.Rows.Count, dt.Columns.Count);
- for (int i = 0; i < dt.Rows.Count; i++)
- {
- for (int j = 0; j < dt.Columns.Count; j++)
- {
- table.Rows[i].Cells[j].AddParagraph().AppendText(dt.Rows[i][j].ToString());
- }
- }
- //获取指定书签位置
- BookmarksNavigator navigator = new BookmarksNavigator(doc);
- navigator.MoveToBookmark("origin2");
- //将表格添加至TextBodyPart
- TextBodyPart part = navigator.GetBookmarkContent();
- part.BodyItems.Add(table);
- //替换书签内容
- navigator.ReplaceBookmarkContent(part);
- //保存并打开文件
- doc.SaveToFile("output.docx", FileFormat.Docx2013);
- System.Diagnostics.Process.Start("output.docx");
- }
- }
- }
表格插入效果:
【示例4】删除书签
C#
- using Spire.Doc;
- using Spire.Doc.Documents;
- namespace Removing
- {
- class Program
- {
- static void Main(string[] args)
- {
- //实例化Document类,加载文档
- Document doc = new Document();
- doc.LoadFromFile("sample.docx");
- //创建BookmarksNavigator实例
- BookmarksNavigator navigator = new BookmarksNavigator(doc);
- //指向特定的书签
- navigator.MoveToBookmark("origin2");
- //删除书签中的内容
- navigator.DeleteBookmarkContent(false);
- //删除书签
- doc.Bookmarks.Remove(doc.Bookmarks.FindByName("bookmark1"));
- //保存并打开文档
- doc.SaveToFile("RemoveBookmark.docx", FileFormat.Docx);
- System.Diagnostics.Process.Start("RemoveBookmark.docx");
- }
- }
- }
书签删除效果前后对比:
测试文档如下
删除书签后: