Arbeta med tabeller

Arbeta med tabeller

Arbeta med tabeller

Tabeller i Aspose.Words FOSS för .NET är representerade av Aspose.Words.Tables namnutrymme: Table, Row, och Cell utgör en tre-nivåers sammansatt nodhierarki som sitter i dokumentträdet bredvid stycken. Den här sidan täcker att bygga tabeller med DocumentBuilder, formatera rader och celler, styra tabellomfattande layout och slå ihop celler.


Tabellens objektmodell

En Table är en CompositeNode som innehåller Row noder, och varje Row är en CompositeNode som innehåller Cell noder; en Cell i sin tur innehåller stycken och, eventuellt, inbäddade tabeller. Table.Rows returnerar en RowCollection, Row.Cells returnerar en CellCollection, och en Body eller annan Story exponerar varje top-level-tabell i den via dess Tables egenskap, en TableCollection. Alla tre samlingar stödjer Add(), Insert(), Remove(), RemoveAt(), Contains() och IndexOf(). Table.EnsureMinimum(), Row.EnsureMinimum() och Cell.EnsureMinimum() fyller vardera i det minsta giltiga innehållet som en nod av den typen behöver (en tom rad, en tom cell eller ett tomt stycke, respektive) efter att programatiska ändringar lämnat en utan det.


Bygga tabeller med DocumentBuilder

DocumentBuilder.StartTable() startar en ny tabell vid markören, InsertCell() lägger till en cell i den aktuella raden, EndRow() avslutar den aktuella raden och EndTable() avslutar tabellen. Ställ in DocumentBuilder.CellFormat och DocumentBuilder.RowFormat innan du anropar InsertCell() eller EndRow() för att tillämpa standardformatering på celler och rader när de skapas — dessa egenskaper fungerar som en mall för innehållet som byggaren infogar härnäst, inte som en retroaktiv ändring av celler som redan finns i dokumentet.


Formatering av celler och rader

Cell.CellFormat är en CellFormat instans (Borders, Shading, Width, WrapText, FitText, HorizontalMerge, VerticalMerge, VerticalAlignment, PreferredWidth, LeftPadding, RightPadding, TopPadding, BottomPadding, HideMark, Orientation) med ClearFormatting() för att återställa den och SetPaddings() för att sätta alla fyra cellutfyllnader på en gång. Row.RowFormat är en RowFormat instans (Borders, Height, HeightRule, AllowBreakAcrossPages, HeadingFormat) med sin egen ClearFormatting().


Tabellomfattande formatering och AutoFit

Table själv exponerar layout-egenskaper – Alignment (TableAlignment), Bidi, LeftIndent, PreferredWidth, Style, StyleIdentifier, StyleName, StyleOptions (TableStyleOptions), TextWrapping, och tillgänglighetsmetadata via Title och Description. Table.AutoFit(AutoFitBehavior) ändrar storlek på tabellen och dess celler enligt det angivna beteendet. SetBorder() sätter en kant på en sida och SetBorders() sätter alla kanter till samma linjestil, bredd och färg i hela tabellen; ClearBorders() och ClearShading() återställer dem. ConvertToHorizontallyMergedCells() konverterar celler som sammanfogades genom matchande bredd till celler som explicit flaggas med HorizontalMerge.


Föredragna och cellbredder

PreferredWidth representerar en bredd och dess enhet, skapad med de statiska fabrikmetoderna PreferredWidth.FromPercent() eller PreferredWidth.FromPoints(); PreferredWidthType identifierar vilken typ av värde (Auto, Percent eller Points) ett givet PreferredWidth innehåller. Både Table.PreferredWidth och CellFormat.PreferredWidth accepterar dessa värden.


Sammanfogade celler

CellFormat.HorizontalMerge och CellFormat.VerticalMerge (CellMerge) markerar hur en cell deltar i en horisontell eller vertikal sammanslagning med sina grannar. CellVerticalAlignment styr hur innehållet justeras vertikalt inom en cell, oberoende av eventuell sammanslagningsstatus.


Tips och bästa praxis

  • Stäng varje StartTable() med en matchande EndRow() per rad och ett sista EndTable() – en oavslutad rad eller tabell lämnar byggarens interna tillstånd (och det resulterande dokumentträdet) felaktigt.
  • Ange DocumentBuilder.CellFormat och DocumentBuilder.RowFormat före varje InsertCell()- eller EndRow()-anrop om olika rader eller celler i samma tabell kräver olika formatering; byggaren tillämpar det som för tillfället är inställt vid insättningen.
  • Anropa Table.EnsureMinimum(), Row.EnsureMinimum() eller Cell.EnsureMinimum() efter att ha tagit bort innehåll programatiskt så att noden behåller den minsta giltiga strukturen som Word förväntar sig.
  • Använd PreferredWidth.FromPercent() för tabeller som ska anpassas till den tillgängliga sidbredden, och PreferredWidth.FromPoints() för en fast layoutbredd.
  • AutoFitBehavior tillämpas när du anropar Table.AutoFit() – den körs inte kontinuerligt när du lägger till eller tar bort innehåll, så anropa den igen efter betydande ändringar om du behöver att tabellen anpassas på nytt.

Vanliga problem

ProblemOrsakÅtgärd
Tabellen ser felaktig ut eller ger fel när den sparasEn rad eller tabellen stängdes aldrig med EndRow() / EndTable()Para alltid StartTable() med ett avslutande EndTable() och avsluta varje rad med EndRow()
Nya celler tar inte upp den formatering jag angavCellFormat / RowFormat ändrades i byggaren efter att cellerna redan hade satts inStäll in DocumentBuilder.CellFormat / RowFormat innan du anropar InsertCell() / EndRow() för det innehållet
Tabellen ändrar inte storlek på det sätt jag förväntar mig efter redigeringarAutoFit() speglar tabellens tillstånd i det ögonblick den anropas, inte kontinuerligtAnropa Table.AutoFit(AutoFitBehavior) igen efter strukturella ändringar
Intilliggande celler som ser sammanslagna ut beter sig som separata cellerCellerna matchades bara efter bredd, inte flaggades med CellMergeAnropa Table.ConvertToHorizontallyMergedCells(), eller ange CellFormat.HorizontalMerge / VerticalMerge explicit

FAQ

Hur bygger jag en tabell från början med DocumentBuilder?

Anropa StartTable(), sedan InsertCell() för varje cell i en rad, EndRow() för att avsluta raden, upprepa för ytterligare rader, och slutligen EndTable() för att avsluta tabellen.

Hur ställer jag in en procentbaserad tabellbredd istället för en fast bredd?

Tilldela Table.PreferredWidth = PreferredWidth.FromPercent(value) istället för PreferredWidth.FromPoints(value).

Hur återställer jag all formatering på en cell eller rad?

Anropa CellFormat.ClearFormatting() på en cells CellFormat, eller RowFormat.ClearFormatting() på en rads RowFormat.

Hur ställer jag in kanter och skuggning för hela tabellen på en gång?

Använd Table.SetBorders() för en enhetlig kant på alla sidor, Table.SetBorder() för en sida åt gången, och Table.SetShading() för enhetlig skuggning; ClearBorders() och ClearShading() återställer dem.


API Reference Sammanfattning

Klass / EnumBeskrivning
TableTabellnod; Rows, AutoFit(), SetBorders(), SetShading(), PreferredWidth
RowTabellradnod; Cells, RowFormat, EnsureMinimum()
CellTabellcellnod; CellFormat, EnsureMinimum()
TableCollection / RowCollection / CellCollectionTypade samlingar av Table / Row / Cell noder
CellFormatFormatering per cell: kanter, skuggning, utfyllnad, sammanslagningsstatus, vertikal justering
RowFormatFormatering per rad: kanter, höjd, sidbrytningsbeteende
PreferredWidth / PreferredWidthTypeTabell- eller cellbredds värde och dess enhet (auto, procent, punkter)
AutoFitBehaviorHur Table.AutoFit() ändrar storlek på en tabell och dess celler
CellMerge / CellVerticalAlignmentHorisontell/vertikal cellsammanfogningsstatus och vertikal innehållsjustering
TableAlignment / TableStyleOptions / TextWrappingTabellomfattande justering, stiltillämpning och textbrytningsbeteende
DocumentBuilder.StartTable / InsertCell / EndRow / EndTableMarkörbaserad tabellkonstruktion

Se även

 Svenska