Arbeta med text

Arbeta med text

Text i ett Word-dokument är organiserad i Run-noder (sammanhängande tecken som delar samma teckensnittsformatering) grupperade i Paragraph-noder. Aspose.Words FOSS för .NET exponerar båda direkt, tillsammans med Font för teckenformatering, ParagraphFormat för styckesnivåformatering och Range för att läsa eller ersätta text i någon del av trädet. Denna guide täcker runs och typsnitt, styckeformatering, läsning och ersättning av text, kommentarer och listformatering på styckesnivå.


Runs och teckenformatering

En Run representerar ett textspann som delar en uppsättning formatering; dess Text-egenskap innehåller klartextinnehållet och dess Font-egenskap (ett Font-objekt) innehåller teckennivåformatering — Name, Size, Bold, Italic, Underline, Color, HighlightColor, Subscript/Superscript, StrikeThrough och många fler. Font.ClearFormatting() återställer ett runs teckensnitt till standardvärden. Ett styckes runs är tillgängliga via dess Runs-egenskap, en RunCollection.


Stycken och styckeformatering

Paragraph är en sammansatt nod som innehåller runsen (och annat inline-innehåll) för ett stycke; ett dokuments eller kropps stycken exponeras som en ParagraphCollection (Body.Paragraphs). Paragraph.ParagraphFormat (ett ParagraphFormat-objekt) styr layout på styckesnivå — Alignment, indrag (LeftIndent, RightIndent, FirstLineIndent), avstånd (SpaceBefore, SpaceAfter, LineSpacing, LineSpacingRule) och pagineringsbeteende (KeepTogether, KeepWithNext, PageBreakBefore, WidowControl). ParagraphFormat.ClearFormatting() återställer dessa till standardvärden, och Paragraph.JoinRunsWithSameFormatting() slår ihop intilliggande runs som har identisk formatering.


Läsa och ersätta text med Range

Varje nod som innehåller innehåll — en Document, Section, Paragraph eller Run — exponerar en Range. Range.Text returnerar vanlig text för allt inom det intervallet, och Range.Replace(pattern, replacement) utför en sök-och-ersätt som är begränsad till just det intervallet, så du kan till exempel ersätta text i ett stycke utan att röra resten av dokumentet. Range.Delete() tar bort intervallets innehåll helt.


Comments

En Comment-nod förankrar en kommentar till en plats i texten; skapa en med new Comment(doc, author, initial, dateTime) och sätt dess brödtext med SetText(text), sätt sedan in den i dokumentet som vilken annan nod som helst. Comment.AddReply(author, initial, dateTime, text) bifogar ett trådat svar, och RemoveReply(reply) / RemoveAllReplies() tar bort dem. Dokumentets kommentarer samlas i en CommentCollection.


Listformatering på styckennivå

Paragraph.ListFormat (ett ListFormat-objekt) rapporterar och styr om ett stycke är en del av en lista: IsListItem och ListLevelNumber rapporterar dess nuvarande tillstånd, ApplyBulletDefault() och ApplyNumberDefault() omvandlar ett stycke till ett standardpunkterat eller numrerat listobjekt, ListIndent() / ListOutdent() ändrar dess listnivå, och RemoveNumbers() gör det tillbaka till ett vanligt stycke.


Tips och bästa praxis

  • Ange teckensnittsegenskaper på DocumentBuilder.Font innan du skriver text med byggaren i stället för att först skriva text och sedan omformatera enskilda Run-objekt i efterhand.
  • Avgränsa Range.Replace till det minsta intervallet som täcker det du faktiskt vill ändra — anropa det på ett Paragraph- eller Section-intervall istället för hela dokumentet när ändringen inte ska gälla dokumentomfattande.
  • Anropa Paragraph.JoinRunsWithSameFormatting() efter en serie av programatiska redigeringar för att undvika en onödigt fragmenterad körstruktur.
  • Använd ListFormat.ApplyBulletDefault() / ApplyNumberDefault() för en snabb standardslista i stället för att konstruera listdefinitioner manuellt när de inbyggda standardinställningarna är tillräckliga.
  • Läs Comment.AddReply-resultat som Comment-noder själva — svaren är fullständiga kommentarsobjekt, inte rena strängar.

Vanliga problem

ProblemOrsakÅtgärd
Formatering av en Runs Font förändrar inte visuellt intillande textIntillande text finns i ett annat Run med sin egen Font-instansLokalisera och formatera varje påverkad Run, eller ange formatering via DocumentBuilder.Font innan du skriver
Range.Replace ändrar text utanför det avsedda områdetReplace anropades på Document.Range istället för ett smalare nodintervallAnropa Replace på den specifika Paragraph, Section eller en annan nods Range
Ett stycke ser ut som ett listobjekt men IsListItem är falsktPunkt-/nummer är manuell text, inte riktig listformateringAnvänd riktig listformatering med ListFormat.ApplyBulletDefault() eller ApplyNumberDefault() istället för skrivna tecken
Dokumentet har många fler Run-noder än förväntatUpprepade små redigeringar delar upp sekvenser utan att återfoga demAnropa Paragraph.JoinRunsWithSameFormatting() efter batcher av redigeringar

FAQ

Vad är skillnaden mellan Run och Paragraph?

En Run är ett textspann som delar en uppsättning teckenformatering (Font); en Paragraph är den sammansatta noden som innehåller en eller flera körningar (och annat inline-innehåll) samt styckeformatering på paragrafnivå (ParagraphFormat).

Hur läser jag all text i ett dokument eller avsnitt?

Läs Text-egenskapen för den nodens Range — till exempel document.Range.Text eller section.Range.Text.

Hur hittar och ersätter jag text i bara ett stycke?

Anropa Replace(pattern, replacement) på den Paragraphs Range istället för på Document.Range.

Hur lägger jag till en kommentar till ett dokument?

Skapa den med new Comment(doc, author, initial, dateTime), sätt dess text med SetText(text) och infoga den i trädet; svara på den med Comment.AddReply(author, initial, dateTime, text).

Hur omvandlar jag ett stycke till ett punktlistobjekt?

Anropa ApplyBulletDefault() på det styckets ListFormat; använd ApplyNumberDefault() för en numrerad lista istället.


API Reference Sammanfattning

Klass/MetodBeskrivning
RunEtt textspann som delar en uppsättning teckenformatering.
FontTeckennivåformatering — namn, storlek, fetstil, kursiv, färg och mer.
ParagraphSammansatt nod som innehåller runs och formatering för ett stycke.
ParagraphFormatStycke-nivåformatering — justering, indrag, avstånd, paginering.
ParagraphCollectionTypad samling av Paragraph noder, t.ex. Body.Paragraphs.
RangeEtt sammanhängande område i dokumentet; stöder Text, Replace och Delete.
CommentEn trådad kommentar förankrad till en plats i texten.
CommentCollectionDokumentets samling av kommentarer.
ListFormatKontrollerar om och hur ett stycke deltar i en lista.

Se även

 Svenska