Wie man mit Text in .NET arbeitet
Dieses Handbuch zeigt, wie man mit Text in Aspose.Words FOSS für .NET arbeitet: die Schriftart eines Runs formatieren, einen Absatz formatieren, Text mit Range suchen und ersetzen, einen Kommentar hinzufügen und einen Absatz in ein Listenelement umwandeln. Aspose.Words FOSS für .NET ist über NuGet oder durch Kompilieren aus dem Quellcode verfügbar.
Schritt-für-Schritt-Anleitung
Schritt 1: Bibliothek holen
Klonen Sie das Repository und bauen Sie es Aspose.Words.sln in der Release-Konfiguration, dann fügen Sie einen Projektverweis zu Aspose.Words.csproj aus Ihrem eigenen .NET-Projekt, wie im Installationshandbuch. Hinzufügen using Aspose.Words; am Anfang jeder Datei, die mit Text arbeitet.
Schritt 2: Schriftart eines Runs formatieren
Ein Run ist ein Textabschnitt, der ein Satz von Formatierungen gemeinsam nutzt; seine Text-Eigenschaft enthält den Klartextinhalt und ihre Font-Eigenschaft (ein Font-Objekt) enthält die Zeichenformatierung — Name, Size, Bold, Italic, Underline, Color, HighlightColor, Subscript/Superscript und StrikeThrough unter anderem. Font.ClearFormatting() setzt einen Run auf die Standardwerte zurück. Die Runs eines Absatzes sind über seine Runs-Eigenschaft verfügbar, ein RunCollection. Das Festlegen von Schriftarteigenschaften auf DocumentBuilder.Font, bevor neuer Text geschrieben wird, ist in der Regel einfacher, als einzelne Run-Objekte nachträglich zu formatieren.
Schritt 3: Absatz formatieren
Paragraph.ParagraphFormat (ein ParagraphFormat-Objekt) steuert das Layout auf Absatzebene: Alignment, Einzüge (LeftIndent, RightIndent, FirstLineIndent), Abstände (SpaceBefore, SpaceAfter, LineSpacing, LineSpacingRule) und das Seitenumbruchverhalten (KeepTogether, KeepWithNext, PageBreakBefore, WidowControl). ParagraphFormat.ClearFormatting() setzt diese auf die Standardwerte zurück, und Paragraph.JoinRunsWithSameFormatting() fügt benachbarte Runs zusammen, die identische Formatierung besitzen — nützlich, nachdem eine Reihe programmatischer Änderungen einen Absatz mit mehr Runs als nötig hinterlassen hat.
Schritt 4: Text im Bereich suchen und ersetzen
Jeder inhaltstragende Knoten — ein Document, Section, Paragraph oder Run — stellt ein Range zur Verfügung. Range.Text gibt den Klartext von allem innerhalb dieses Bereichs zurück, und Range.Replace(pattern, replacement) führt ein Suchen-und-Ersetzen ausschließlich für diesen Bereich aus: Rufen Sie es auf dem Range eines Paragraph auf, um den Text nur in einem Absatz zu ändern, oder auf Document.Range, um das gesamte Dokument zu durchsuchen. Range.Delete() entfernt den Inhalt des Bereichs vollständig.
Schritt 5: Kommentar hinzufügen
Erzeugen Sie ein Comment mit new Comment(doc, author, initial, dateTime), setzen Sie dessen Text mit SetText(text) und fügen Sie es dann wie jeden anderen Knoten in den Baum ein. Comment.AddReply(author, initial, dateTime, text) fügt eine Thread-Antwort hinzu — selbst ein Comment — und RemoveReply(reply) / RemoveAllReplies() entfernen Antworten wieder. Die Kommentare eines Dokuments werden in einem CommentCollection gesammelt.
Schritt 6: Einen Absatz in ein Listenelement umwandeln
Paragraph.ListFormat (ein ListFormat-Objekt) meldet und steuert, ob ein Absatz an einer Liste teilnimmt: IsListItem und ListLevelNumber geben den aktuellen Zustand wieder. ApplyBulletDefault() verwandelt den Absatz in ein standardmäßiges Aufzählungszeichen, und ApplyNumberDefault() in ein standardmäßiges nummeriertes Element; ListIndent() / ListOutdent() ändern dessen Verschachtelungsebene, und RemoveNumbers() wandelt ihn zurück in einen einfachen Absatz.
Häufige Probleme und Lösungen
Formatieren einer Run’s Schriftart ändert den angrenzenden Text nicht. Benachbarter Text ist ein anderer Run mit seinem eigenen Font Instanz. Entweder lokalisieren und formatieren Sie jede betroffene Run, oder setzen Sie die Formatierung auf DocumentBuilder.Font bevor neuer Text geschrieben wird.
Range.Replace ändert Text außerhalb des beabsichtigten Bereichs. Replace wurde aufgerufen auf Document.Range statt eines engeren Knotenbereichs. Rufen Sie es auf dem spezifischen Paragraph or Section dessen Text sich ändern sollte.
Ein Absatz sieht aus wie ein Aufzählungslistenpunkt, aber IsListItem is false. Der Aufzählungspunkt ist getippter Text, keine echte Listformatierung. Wenden Sie ihn an mit ListFormat.ApplyBulletDefault() stattdessen.
Das Dokument endet mit deutlich mehr Run Knoten als erwartet. Wiederholte kleine programmatische Bearbeitungen teilen Laufabschnitte, ohne sie wieder zusammenzuführen. Rufen Sie Paragraph.JoinRunsWithSameFormatting() nach einem Stapel von Bearbeitungen.
Häufig gestellte Fragen
Was ist der Unterschied zwischen Run und Paragraph?
Ein Run ist ein Textabschnitt, der ein Satz von Zeichenformatierungen (Font) gemeinsam nutzt. Ein Paragraph ist das zusammengesetzte Element, das einen oder mehrere Läufe sowie Absatzformatierungen (ParagraphFormat) enthält.
Wie lese ich den gesamten Text in einem Dokument oder in einem einzelnen Abschnitt?
Lese die Text-Eigenschaft des Range dieses Knotens — document.Range.Text oder section.Range.Text.
Wie ersetze ich Text nur innerhalb eines einzelnen Absatzes, nicht im gesamten Dokument?
Rufe Replace(pattern, replacement) auf dem Range dieses Paragraph auf, nicht auf Document.Range.
Wie antworte ich auf einen bestehenden Kommentar?
Rufe Comment.AddReply(author, initial, dateTime, text) auf der ursprünglichen Comment-Instanz auf.
Wie verwandle ich ein nummeriertes Listenelement wieder in einen normalen Absatz?
Rufen Sie RemoveNumbers() für den ListFormat dieses Absatzes auf.