概要
书签的设置可以帮助我们快速的定位某段文字,使用起来很方便,也很节省时间。对word文档中的书签操作,比较常见的是直接对某段文字插入书签,在下面的示例中,除了介绍插入书签的方法外,也将介绍操作书签的一些拓展方法,包括插入图片、表格到书签位置所在的段落、删除书签等。示例要点如下:
1. 插入书签
2. 插入图片到书签
3. 插入表格到书签
4. 删除书签
4.1 删除书签
4.2 删除书签所在的段落文字
使用工具
Free Spire.Doc for .NET 6.3 (社区版)Visual Studiops:下载安装该类库后,注意添加引用Spire.Doc.dl到项目程序,dll文件可在安装路径的Bin文件夹中获取。
【示例1】插入书签
C#
C#代码
usingSystem;usingSpire.Doc;usingSpire.Doc.Documents;namespaceWordBookmark{classBookmark{staticvoidMain(string[]args){//实例化Document类,加载文档Documentdocument=newDocument();document.LoadFromFile("test.docx");//插入书签到指定段落,并命名书签Sectionsection=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#
C#代码
usingSpire.Doc;usingSpire.Doc.Documents;usingSpire.Doc.Fields;usingSystem.Drawing;namespaceInsertImgToBookmark_Doc{classProgram{staticvoidMain(string[]args){//创建实例,加载文档Documentdocument=newDocument();document.LoadFromFile("test.docx");//实例化BookmarksNavigator类,指定需要添加图片的书签“Bookmark1”BookmarksNavigatorbn=newBookmarksNavigator(document);bn.MoveToBookmark("Bookmark1",true,true);//添加段落,加载图片并插入到段落Sectionsection0=document.AddSection();Paragraphparagraph=section0.AddParagraph();Imageimage=Image.FromFile("img.png");DocPicturepicture=paragraph.AppendPicture(image);bn.InsertParagraph(paragraph);document.Sections.Remove(section0);//保存文档并打开stringoutput="result.docx";document.SaveToFile(output,FileFormat.Docx);System.Diagnostics.Process.Start(output);}}}
图片插入效果:
【示例3】插入表格到书签所在段落
C#
C#代码
usingSpire.Doc;usingSpire.Doc.Documents;usingSystem.Data;namespaceInsertTableToBookmark_Doc{classProgram{staticvoidMain(string[]args){//创建文档,加载文件Documentdoc=newDocument();doc.LoadFromFile("test.docx");//创建Table对象Tabletable=newTable(doc,true);//创建模拟数据DataTabledt=newDataTable();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(newstring[]{"PI","Type","Nov.","YTD"});dt.Rows.Add(newstring[]{"1","BAICEC-Series","15.719","64.910"});dt.Rows.Add(newstring[]{"2","TeslaModelS","3.889","46.951"});dt.Rows.Add(newstring[]{"3","NissanLeaf","2.817","46.423"});//将数据填充至表格table.ResetCells(dt.Rows.Count,dt.Columns.Count);for(inti=0;i<dt.Rows.Count;i++){for(intj=0;j<dt.Columns.Count;j++){table.Rows[i].Cells[j].AddParagraph().AppendText(dt.Rows[i][j].ToString());}}//获取指定书签位置BookmarksNavigatornavigator=newBookmarksNavigator(doc);navigator.MoveToBookmark("origin2");//将表格添加至TextBodyPartTextBodyPartpart=navigator.GetBookmarkContent();part.BodyItems.Add(table);//替换书签内容navigator.ReplaceBookmarkContent(part);//保存并打开文件doc.SaveToFile("output.docx",FileFormat.Docx);System.Diagnostics.Process.Start("output.docx");}}}
表格插入效果:
【示例4】删除书签
C#
C#代码
usingSpire.Doc;usingSpire.Doc.Documents;namespaceRemoving{classProgram{staticvoidMain(string[]args){//实例化Document类,加载文档Documentdoc=newDocument();doc.LoadFromFile("sample.docx");//创建BookmarksNavigator实例BookmarksNavigatornavigator=newBookmarksNavigator(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");}}}
书签删除效果前后对比:
测试文档如下
删除书签后:
文章转自/blog/2428804