• Word控件Spire.Doc 【表单域】教程(七):在 C#、VB.NET 中的 Word 中创建对书签的交叉引用


    我们已经演示了如何在创建 word 文档时添加一个全新的 TOC 。本文将向您展示如何将 TOC 插入到现有的带有样式的 Word 文档中,并从 Word 文档中删除 TOC。

    Spire.Doc for.NET 最新下载

    交叉引用是指同一文档中其他地方的相关信息。您可以创建对任何现有项目的交叉引用,例如标题、脚注、书签、题注和编号段落。本文将向您展示如何使用 Spire.Doc 与 C# 和 VB.NET 创建对书签的交叉引用。

    第 1 步:创建一个 Document 实例。

    Document doc = new Document();
    Section section = doc.AddSection();

    第 2 步:插入书签。

    Paragraph paragraph = section.AddParagraph();
    paragraph.AppendBookmarkStart("MyBookmark");
    paragraph.AppendText("Text inside a bookmark");
    paragraph.AppendBookmarkEnd("MyBookmark");

    第 3 步:创建一个交叉引用字段,并通过书签名称将其链接到书签。

    Field field = new Field(doc);
    field.Type = FieldType.FieldRef;
    field.Code = @"REF MyBookmark \p \h";
    

    第 4 步:添加一个段落,并将字段插入该段落。

    paragraph = section.AddParagraph();
    paragraph.AppendText("For more information, see ");
    paragraph.ChildObjects.Add(field);
    

    第 5 步:在段落中插入一个 FieldSeparator 对象,作为字段中的分隔符。  

    FieldMark fieldSeparator= new FieldMark(doc, FieldMarkType.FieldSeparator);
    paragraph.ChildObjects.Add(fieldSeparator);

    第 6 步:设置交叉引用字段的显示文本。

    TextRange tr = new TextRange(doc);
    tr.Text = "above";
    paragraph.ChildObjects.Add(tr);

    第 7 步:在段落中插入一个 FieldEnd 对象,用于标记字段的结束。

    FieldMark fieldEnd = new FieldMark(doc, FieldMarkType.FieldEnd);
    paragraph.ChildObjects.Add(fieldEnd);

    第 8 步:保存到文件。

    doc.SaveToFile("output.docx", FileFormat.Docx2013);

    输出

    交叉引用显示为将读者带到引用项目的链接。

    完整代码

    [C#]

    using Spire.Doc;
    using Spire.Doc.Documents;
    using Spire.Doc.Fields;
    namespace CreatCR
    {
    class Program
    {
    static void Main(string[] args)
    {
    Document doc = new Document();
    Section section = doc.AddSection();
    //create a bookmark
    Paragraph paragraph = section.AddParagraph();
    paragraph.AppendBookmarkStart("MyBookmark");
    paragraph.AppendText("Text inside a bookmark");
    paragraph.AppendBookmarkEnd("MyBookmark");
    //insert line breaks
    for (int i = 0; i < 4; i++)
    {
    paragraph.AppendBreak(BreakType.LineBreak);
    }
    //create a cross-reference field, and link it to bookmark
    Field field = new Field(doc);
    field.Type = FieldType.FieldRef;
    field.Code = @"REF MyBookmark \p \h";
    //insert field to paragraph
    paragraph = section.AddParagraph();
    paragraph.AppendText("For more information, see ");
    paragraph.ChildObjects.Add(field);
    //insert FieldSeparator object
    FieldMark fieldSeparator = new FieldMark(doc, FieldMarkType.FieldSeparator);
    paragraph.ChildObjects.Add(fieldSeparator);
    //set display text of the field
    TextRange tr = new TextRange(doc);
    tr.Text = "above";
    paragraph.ChildObjects.Add(tr);
    //insert FieldEnd object to mark the end of the field
    FieldMark fieldEnd = new FieldMark(doc, FieldMarkType.FieldEnd);
    paragraph.ChildObjects.Add(fieldEnd);
    //save file
    doc.SaveToFile("output.docx", FileFormat.Docx2013);
    
    }
    }
    }
    

    [VB.NET]

    Imports Spire.Doc
    Imports Spire.Doc.Documents
    Imports Spire.Doc.Fields
    Namespace CreatCR
    Class Program
    Private Shared Sub Main(args As String())
    Dim doc As New Document()
    Dim section As Section = doc.AddSection()
    'create a bookmark
    Dim paragraph As Paragraph = section.AddParagraph()
    paragraph.AppendBookmarkStart("MyBookmark")
    paragraph.AppendText("Text inside a bookmark")
    paragraph.AppendBookmarkEnd("MyBookmark")
    'insert line breaks
    For i As Integer = 0 To 3
    paragraph.AppendBreak(BreakType.LineBreak)
    Next
    'create a cross-reference field, and link it to bookmark
    Dim field As New Field(doc)
    field.Type = FieldType.FieldRef
    field.Code = "REF MyBookmark \p \h"
    'insert field to paragraph
    paragraph = section.AddParagraph()
    paragraph.AppendText("For more information, see ")
    paragraph.ChildObjects.Add(field)
    'insert FieldSeparator object
    Dim fieldSeparator As New FieldMark(doc, FieldMarkType.FieldSeparator)
    paragraph.ChildObjects.Add(fieldSeparator)
    'set display text of the field
    Dim tr As New TextRange(doc)
    tr.Text = "above"
    paragraph.ChildObjects.Add(tr)
    'insert FieldEnd object to mark the end of the field
    Dim fieldEnd As New FieldMark(doc, FieldMarkType.FieldEnd)
    paragraph.ChildObjects.Add(fieldEnd)
    'save file
    doc.SaveToFile("output.docx", FileFormat.Docx2013)
    
    End Sub
    End Class
    End Namespace
    

     欢迎下载|体验更多E-iceblue产品 技术交流Q群(767755948)  

  • 相关阅读:
    Oracle 体系结构概述
    背景的样式
    HTTP协议简介
    04 class文件格式
    免费的秘密:免费,不是真的免费,是看起来像免费……
    【c++】list详细讲解
    每日刷题记录 (六)
    高数---二重积分
    C#面:& 和 && 区别
    Redis 设置密码
  • 原文地址:https://blog.csdn.net/m0_67129275/article/details/126153452