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.Fontinnan du skriver text med byggaren i stället för att först skriva text och sedan omformatera enskildaRun-objekt i efterhand. - Avgränsa
Range.Replacetill det minsta intervallet som täcker det du faktiskt vill ändra — anropa det på ettParagraph- ellerSection-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 somComment-noder själva — svaren är fullständiga kommentarsobjekt, inte rena strängar.
Vanliga problem
| Problem | Orsak | Åtgärd |
|---|---|---|
Formatering av en Runs Font förändrar inte visuellt intillande text | Intillande text finns i ett annat Run med sin egen Font-instans | Lokalisera och formatera varje påverkad Run, eller ange formatering via DocumentBuilder.Font innan du skriver |
Range.Replace ändrar text utanför det avsedda området | Replace anropades på Document.Range istället för ett smalare nodintervall | Anropa Replace på den specifika Paragraph, Section eller en annan nods Range |
Ett stycke ser ut som ett listobjekt men IsListItem är falskt | Punkt-/nummer är manuell text, inte riktig listformatering | Använd riktig listformatering med ListFormat.ApplyBulletDefault() eller ApplyNumberDefault() istället för skrivna tecken |
Dokumentet har många fler Run-noder än förväntat | Upprepade små redigeringar delar upp sekvenser utan att återfoga dem | Anropa 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/Metod | Beskrivning |
|---|---|
Run | Ett textspann som delar en uppsättning teckenformatering. |
Font | Teckennivåformatering — namn, storlek, fetstil, kursiv, färg och mer. |
Paragraph | Sammansatt nod som innehåller runs och formatering för ett stycke. |
ParagraphFormat | Stycke-nivåformatering — justering, indrag, avstånd, paginering. |
ParagraphCollection | Typad samling av Paragraph noder, t.ex. Body.Paragraphs. |
Range | Ett sammanhängande område i dokumentet; stöder Text, Replace och Delete. |
Comment | En trådad kommentar förankrad till en plats i texten. |
CommentCollection | Dokumentets samling av kommentarer. |
ListFormat | Kontrollerar om och hur ett stycke deltar i en lista. |