בעת יצירת מסמכי Word ב-Java, ייתכן שיהיה עליך ליצור תוכן עניינים (TOC). אתה יכול למצוא פתרונות שונים ליצירת TOC, עם זאת, אתה צריך לכתוב קוד מורכב ואתה עלול להתמודד עם בעיות פריסה. אז הרשו לי לספק לכם שיטה פשוטה וקלה ליישום ליצירת תוכן עניינים במסמכי Word ב-Java.

צור TOC ב-Word

תוכן עניינים(TOC) ב- Word DOC נותן לך סקירה כללית של מה מסמך מכיל. יתר על כן, זה מאפשר לך לנווט לקטע מסוים במסמך. בסעיפים הבאים תלמדו שיטה שלב אחר שלב ליצירת תוכן עניינים במסמך Word. כמו כן, תראה כיצד לחלץ, לעדכן ולהסיר תוכן עניינים במסמך Word ב-Java.

C# API ליצירת תוכן עניינים במסמכי Word

לעבודה עם תוכן עניינים במסמכי Word, נשתמש ב-Aspose.Words for .NET. ה-API האמור נועד לבצע תכונות אוטומציה בסיסיות כמו גם מתקדמות של Word מתוך יישומי NET. יתר על כן, זה נותן לך אחיזה קולית על המניפולציה של תוכן העניינים במסמכי Word. אתה יכול להוריד את ה-API או להתקין אותו באמצעות NuGet.

PM> Install-Package Aspose.Words

כיצד ליצור תוכן עניינים ב-Word ב-C#

להלן השלבים ליצירת תוכן עניינים במסמך Word ב-C#.

דוגמת הקוד הבאה מראה כיצד להוסיף תוכן עניינים במסמך Word ב-C#.

// לדוגמאות מלאות וקבצי נתונים, נא עבור אל https://github.com/aspose-words/Aspose.Words-for-.NET
// הנתיב לספריית המסמכים.
string dataDir = RunExamples.GetDataDir_WorkingWithDocument();
// אתחול המסמך.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// הוסף תוכן עניינים בתחילת המסמך.
builder.InsertTableOfContents("\\o \"1-3\" \\h \\z \\u");

// תוכן העניינים שזה עתה הוכנס יהיה ריק בתחילה.
// יש לאכלס אותו על ידי עדכון השדות במסמך.
doc.UpdateFields();
dataDir = dataDir + "DocumentBuilderInsertTOC_out.doc";
doc.Save(dataDir);

חילוץ תוכן עניינים ממסמך Word ב-C#

להלן השלבים לחילוץ שדות מתוכן עניינים במסמך Word.

  • טען את מסמך Word באמצעות המחלקה Document.
  • עברו בלולאה בכל שדה במסמך באמצעות אוסף Document.Range.Fields.
  • בדוק אם סוג השדה הוא היפר-קישור באמצעות המאפיין Field.Type.
  • בדוק אם השדה נמצא מתחת לקטע תוכן העניינים.
  • אחזר את המידע של השדה והדפיס אותו.

דוגמת הקוד הבאה מראה כיצד לחלץ תוכן עניינים ממסמך Word באמצעות C#.

// הנתיב לספריית המסמכים.
string dataDir = RunExamples.GetDataDir_WorkingWithDocument();

string fileName = "TOC.doc";
Aspose.Words.Document doc = new Aspose.Words.Document(dataDir + fileName);

foreach (Field field in doc.Range.Fields)
{
	if (field.Type.Equals(Aspose.Words.Fields.FieldType.FieldHyperlink))
	{
		FieldHyperlink hyperlink = (FieldHyperlink)field;
		if (hyperlink.SubAddress != null && hyperlink.SubAddress.StartsWith("_Toc"))
		{
			Paragraph tocItem = (Paragraph)field.Start.GetAncestor(NodeType.Paragraph);
			Console.WriteLine(tocItem.ToString(SaveFormat.Text).Trim());
			Console.WriteLine("------------------");
			if (tocItem != null)
			{
				Bookmark bm = doc.Range.Bookmarks[hyperlink.SubAddress];
				// קבל את המיקום שאליו מצביע פריט TOC זה
				Paragraph pointer = (Paragraph)bm.BookmarkStart.GetAncestor(NodeType.Paragraph);
				Console.WriteLine(pointer.ToString(SaveFormat.Text));
			}
		} // End If
	}// End If
}// End Foreach

C# עדכן את תוכן העניינים במסמך Word

בכל פעם שאתה מוסיף תוכן כלשהו למסמך Word, עליך לעדכן את תוכן העניינים. כדי לעשות זאת באופן תוכנתי, אתה פשוט צריך לקרוא לשיטת Document.UpdateFields() לפני שמירת המסמך.

הסר את תוכן העניינים במסמך Word

Aspose.Words עבור NET מאפשר לך גם להסיר את תוכן העניינים ממסמך Word. להלן השלבים לביצוע פעולה זו.

  • ראשית, טען את מסמך Word באמצעות המחלקה Document.
  • קבל ואחסן את הצמתים FieldStart של כל TOC במערך.
  • עברו בלולאה בין הצמתים עד שתקבלו את הצומת מסוג FieldEnd(סוף ה-TOC).
  • הסר את הצמתים באמצעות שיטת Node.Remove() ושמור את המסמך המעודכן.

דוגמת הקוד הבאה מראה כיצד להסיר את תוכן העניינים ממסמך Word ב-C#.

// לדוגמאות מלאות וקבצי נתונים, נא עבור אל https://github.com/aspose-words/Aspose.Words-for-.NET
public static void Run()
{
    
    // הנתיב לספריית המסמכים.
    string dataDir = RunExamples.GetDataDir_WorkingWithStyles();

    // פתח מסמך המכיל TOC.
    Document doc = new Document(dataDir + "Document.TableOfContents.doc");

    // הסר את תוכן העניינים הראשון מהמסמך.
    RemoveTableOfContents(doc, 0);

    dataDir = dataDir + "Document.TableOfContentsRemoveToc_out.doc";
    // שמור את הפלט.
    doc.Save(dataDir);
    
    Console.WriteLine("\nSpecified TOC from a document removed successfully.\nFile saved at " + dataDir);
}
///<summary>
/// מסיר את שדה תוכן העניינים שצוין מהמסמך.
///</summary>
///<param name="doc"> המסמך שממנו יש להסיר את השדה.</param>
///<param name="index"> האינדקס המבוסס על אפס של ה-TOC להסרה.</param>
public static void RemoveTableOfContents(Document doc, int index)
{
    // אחסן את צמתי FieldStart של שדות TOC במסמך לגישה מהירה.
    ArrayList fieldStarts = new ArrayList();
    // זוהי רשימה לאחסון הצמתים שנמצאו בתוך ה-TOC שצוין. הם יוסרו
    // בסוף השיטה הזו.
    ArrayList nodeList = new ArrayList();

    foreach (FieldStart start in doc.GetChildNodes(NodeType.FieldStart, true))
    {
        if (start.FieldType == FieldType.FieldTOC)
        {
            // הוסף את כל ה-FieldStarts שהם מסוג FieldTOC.
            fieldStarts.Add(start);
        }
    }

    // ודא שקיים TOC שצוין על ידי האינדקס שעבר.
    if (index > fieldStarts.Count - 1)
        throw new ArgumentOutOfRangeException("TOC index is out of range");

    bool isRemoving = true;
    // קבל את FieldStart של ה-TOC שצוין.
    Node currentNode = (Node)fieldStarts[index];

    while (isRemoving)
    {
        // בטוח יותר לאחסן את הצמתים הללו ולמחוק את כולם בבת אחת מאוחר יותר.
        nodeList.Add(currentNode);
        currentNode = currentNode.NextPreOrder(doc);

        // ברגע שאנחנו נתקלים בצומת FieldEnd מסוג FieldTOC אז אנחנו יודעים שאנחנו בסוף
        // מה-TOC הנוכחי ואנחנו יכולים לעצור כאן.
        if (currentNode.NodeType == NodeType.FieldEnd)
        {
            FieldEnd fieldEnd = (FieldEnd)currentNode;
            if (fieldEnd.FieldType == FieldType.FieldTOC)
                isRemoving = false;
        }
    }

    // הסר את כל הצמתים שנמצאו ב-TOC שצוין.
    foreach (Node node in nodeList)
    {
        node.Remove();
    }
}

צור תוכן עניינים עם רישיון חינם

אתה יכול לקבל רישיון זמני בחינם וליצור תוכן עניינים במסמכי Word ללא מגבלות הערכה.

סיכום

במאמר זה, למדת כיצד לעבוד עם תוכן עניינים במסמך Word באופן תכנותי. המדריך שלב אחר שלב ודוגמאות קוד הראו כיצד להוסיף, לעדכן, לחלץ ולהסיר את תוכן העניינים ממסמכי Word ב-C#.

API לעיבוד תמלילים C# - גלה עוד

תוכל לחקור עוד על ממשק API לאוטומציה של C# Word באמצעות תיעוד. למקרה שיהיו לך שאלות או חששות, אנא צור איתנו קשר דרך הפורום שלנו.

ראה גם