C# Word腳註和交叉引用功能
阿新 • • 發佈:2019-02-16
腳註通常位於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;
效果圖: