class="MsoNormal">书签的设置可以帮助我们快速的定位某段文字,使用起来很方便,也很节省时间。对word文档中的书签操作,比较常见的是直接对某段文字插入书签,在下面的示例中,除了介绍插入书签的方法外,也将介绍操作书签的一些拓展方法,包括插入图片、表格到书签位置所在的段落、删除书签等。示例要点如下:
1. 插入书签
2. 插入图片到书签
3. 插入表格到书签
4. 删除书签
? 4.1 删除书签
? 4.2 删除书签所在的段落文字
?
?
?
ps:下载安装该类库后,注意添加引用Spire.Doc.dl到项目程序,dll文件可在安装路径的Bin文件夹中获取。
?
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"); } } }
?
测试效果:
?
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); } } }
?图片插入效果:
?
?
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"); } } }
?表格插入效果:
?
?
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"); } } }
?书签删除效果前后对比:
测试文档如下
?删除书签后:
?
?
?以上内容为本次“C#操作Word书签的方法”介绍如需转载,请注明出处。
?