1. 程式人生 > >C# Word腳註和交叉引用功能

C# Word腳註和交叉引用功能

腳註通常位於Word文件頁面底端,用於對文件中某個內容提供解釋、說明或相關的參考資料。如果同一腳註在文件的兩處被引用,應該只在前一個引用的地方插入腳註,在第二次被引用的地方採用“交叉引用”。本文將介紹如何使用Free Spire.Doc元件和C#在Word中插入腳註以及設定交叉引用。

在使用以下程式碼前,需要先在Visual studio中建立一個C#應用程式,並引用Spire.Doc.dll到工程中。

需要用到的名稱空間:

using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
主要程式碼:
//載入文件                       
Document document = new Document();
document.LoadFromFile(@"Input.docx");

//查詢需要新增腳註的文字及其所在的段落
TextSelection ts = document.FindString("橢圓定律", true, true);
TextRange textrRange = ts.GetAsOneRange();
Paragraph paragraph = textrRange.OwnerParagraph;

//建立腳註
Footnote footnote = new Footnote(document);
footnote.FootnoteType = FootnoteType.Footnote;

//新增腳註的註釋文字,並設定它的註釋引用標記格式為上標(腳註由註釋引用標記及其對應的註釋文字組成)
Paragraph footPar = footnote.TextBody.AddParagraph();
footPar.AppendText("是德國天文學家開普勒提出的關於行星運動的三大定律之一");
footnote.MarkerCharacterFormat.SubSuperScript = SubSuperScript.SuperScript;

//將腳註插入到文字之後
paragraph.ChildObjects.Insert(paragraph.ChildObjects.IndexOf(textrRange) + 1, footnote);

//第二步:建立交叉引用域並連結到腳註

//新增書籤"_FootNote1"到腳註註釋文字所在位置
BookmarkStart start = new BookmarkStart(document, "_FootNote1");
BookmarkEnd end = new BookmarkEnd(document, "_FootNote1");
footPar.ChildObjects.Insert(0, start);
footPar.ChildObjects.Insert(footPar.ChildObjects.Count - 1, end);


//建立交叉引用域,並通過書籤將其連結到腳註註釋文字
Field field = new Field(document);
field.Type = FieldType.FieldNoteRef;
field.Code = @" NOTEREF _FootNote1 \f \h  \* MERGEFORMAT ";

//查詢需要引用相同腳註的文字及其所在的段落
textrRange = document.FindString("軌道定律", true, false).GetAsOneRange();
paragraph = textrRange.OwnerParagraph;

//插入交叉引用域到文字之後
paragraph.ChildObjects.Insert(paragraph.ChildObjects.IndexOf(textrRange) + 1, field);

//新增分隔符(分隔符是用來分割域程式碼和域結果的,該步驟不可以省略)
FieldMark fieldmark = new FieldMark(document, FieldMarkType.FieldSeparator);
paragraph.ChildObjects.Insert(paragraph.ChildObjects.IndexOf(textrRange) + 2, fieldmark);

//新增上標到文字之後   
TextRange tr = new TextRange(document);
tr.Text = "1";
tr.CharacterFormat.SubSuperScript = SubSuperScript.SuperScript;
paragraph.ChildObjects.Insert(paragraph.ChildObjects.IndexOf(textrRange) + 3, tr);

//新增域結束標記(該步驟不可以省略)
FieldMark fieldEnd = new FieldMark(document, FieldMarkType.FieldEnd);
paragraph.ChildObjects.Add(fieldEnd);

//儲存文件
document.SaveToFile("腳註.docx", FileFormat.Docx);
如果覺得腳註註釋文字和正文的內容不匹配,可以通過以下程式碼設定其字型格式和顏色:
TextRange text = footPar.AppendText("是德國天文學家開普勒提出的關於行星運動的三大定律之一");
text.CharacterFormat.FontName = "Arial Black";
text.CharacterFormat.FontSize = 10;
text.CharacterFormat.TextColor = Color.DarkGray;
效果圖: