테이블 작업
표 작업
표는 Aspose.Words FOSS 용 .NET 는 다음에 의해 표현됩니다 Aspose.Words.Tables 네임스페이스: Table, Row, 그리고 Cell 문서 트리에서 단락과 나란히 위치하는 3단계 복합 노드 계층을 형성합니다. 이 페이지에서는 다음을 사용한 표 만들기를 다룹니다 with DocumentBuilder, 행 및 셀 서식 지정, 테이블 전체 레이아웃 제어, 셀 병합.
표 객체 모델
A Table은 CompositeNode으로, Row 노드를 포함하고, 각 Row은 CompositeNode이며 Cell 노드를 포함합니다; Cell은 다시 단락과 경우에 따라 중첩 표를 포함합니다. Table.Rows은 RowCollection을 반환하고, Row.Cells은 CellCollection을 반환하며, Body 또는 다른 Story는 Tables 속성을 통해 그 안에 있는 모든 최상위 표를 노출합니다, 이는 TableCollection입니다. 세 컬렉션 모두 Add(), Insert(), Remove(), RemoveAt(), Contains(), IndexOf()을 지원합니다. Table.EnsureMinimum(), Row.EnsureMinimum(), Cell.EnsureMinimum()은 각각 해당 유형 노드가 필요로 하는 최소 유효 콘텐츠(빈 행, 빈 셀, 또는 빈 단락)를 프로그램 편집 후에 채워 넣습니다.
DocumentBuilder를 사용한 표 만들기
DocumentBuilder.StartTable()은 커서 위치에서 새 표를 시작하고, InsertCell()은 현재 행에 셀을 추가하며, EndRow()은 현재 행을 닫고, EndTable()은 표를 닫습니다. InsertCell() 또는 EndRow()을 호출하기 전에 DocumentBuilder.CellFormat와 DocumentBuilder.RowFormat를 설정하면 셀과 행이 생성될 때 기본 서식이 적용됩니다 – 이 속성들은 빌더가 다음에 삽입할 콘텐츠를 위한 템플릿 역할을 하며, 이미 문서에 존재하는 셀에 대한 사후 변경은 아닙니다.
셀 및 행 서식
Cell.CellFormat은(는) CellFormat 인스턴스(Borders, Shading, Width, WrapText, FitText, HorizontalMerge, VerticalMerge, VerticalAlignment, PreferredWidth, LeftPadding, RightPadding, TopPadding, BottomPadding, HideMark, Orientation)이며, ClearFormatting()을(를) 사용해 재설정하고 SetPaddings()을(를) 사용해 네 개의 셀 패딩을 한 번에 설정합니다. Row.RowFormat은(는) RowFormat 인스턴스(Borders, Height, HeightRule, AllowBreakAcrossPages, HeadingFormat)이며 자체 ClearFormatting()을(를) 가지고 있습니다.
테이블 전체 서식 및 AutoFit
Table 자체는 레이아웃 속성을 노출합니다 – Alignment (TableAlignment), Bidi, LeftIndent, PreferredWidth, Style, StyleIdentifier, StyleName, StyleOptions (TableStyleOptions), TextWrapping, 그리고 Title와 Description을 통한 접근성 메타데이터를 제공합니다. Table.AutoFit(AutoFitBehavior)는 지정된 동작에 따라 테이블과 셀의 크기를 조정합니다. SetBorder()는 하나의 테두리 면을 설정하고, SetBorders()은 전체 테이블에 대해 모든 테두리를 동일한 선 스타일, 너비 및 색으로 설정합니다; ClearBorders()와 ClearShading()은 이를 초기화합니다. ConvertToHorizontallyMergedCells()는 너비가 일치하여 병합된 셀을 HorizontalMerge으로 명시적으로 표시된 셀로 변환합니다.
선호 및 셀 너비
PreferredWidth은(는) 너비와 그 단위를 나타내며, 정적 팩터리 메서드 PreferredWidth.FromPercent() 또는 PreferredWidth.FromPoints()로 생성됩니다; PreferredWidthType은(는) 주어진 PreferredWidth이 보유한 값의 종류(Auto, Percent, 또는 Points)를 식별합니다. Table.PreferredWidth와 CellFormat.PreferredWidth 모두 이러한 값을 받아들입니다.
병합된 셀
CellFormat.HorizontalMerge와 CellFormat.VerticalMerge (CellMerge)은(는) 셀이 이웃과 수평 또는 수직 병합에 어떻게 참여하는지를 표시합니다. CellVerticalAlignment은(는) 병합 상태와 무관하게 셀 내에서 내용이 수직으로 정렬되는 방식을 제어합니다.
팁 및 모범 사례
- 각 행마다 일치하는
EndRow()으로 모든StartTable()를 닫고 마지막에EndTable()를 추가하십시오 – 닫히지 않은 행이나 표는 빌더의 내부 상태(및 결과 문서 트리)를 손상시킵니다. - 같은 표의 서로 다른 행이나 셀에 다른 서식이 필요할 경우, 각
InsertCell()또는EndRow()호출 전에DocumentBuilder.CellFormat와DocumentBuilder.RowFormat을 설정하십시오; 빌더는 삽입 순간에 현재 설정된 값을 적용합니다. - 프로그램matically 콘텐츠를 제거한 후
Table.EnsureMinimum(),Row.EnsureMinimum()또는Cell.EnsureMinimum()를 호출하여 노드가 Word가 기대하는 최소 유효 구조를 유지하도록 하십시오. - 사용 가능한 페이지 너비에 맞게 표가 조정되도록 하려면
PreferredWidth.FromPercent()를 사용하고, 고정 레이아웃 너비를 원할 경우PreferredWidth.FromPoints()을 사용하십시오. AutoFitBehavior는Table.AutoFit()을 호출할 때 적용됩니다 – 콘텐츠를 추가하거나 제거할 때 지속적으로 다시 실행되지 않으므로, 표를 다시 맞추어야 할 경우 중요한 편집 후에 다시 호출하십시오.
일반적인 문제
| 문제 | 원인 | 수정 |
|---|---|---|
| 테이블이 형식이 잘못되었거나 저장 시 오류가 발생합니다 | 행 또는 테이블이 EndRow() / EndTable() 로 닫히지 않았습니다 | 항상 StartTable()를 마지막 EndTable()와 짝지어 사용하고, 모든 행을 EndRow()로 닫으세요 |
| 새 셀들이 내가 설정한 서식을 적용하지 않습니다 | CellFormat / RowFormat가 셀을 삽입한 후 빌더에서 변경되었습니다 | 해당 콘텐츠에 대해 InsertCell() / EndRow()를 호출하기 전에 DocumentBuilder.CellFormat / RowFormat를 설정하세요 |
| 편집 후 테이블이 내가 기대하는 방식으로 크기가 조정되지 않는다. | AutoFit()은(는) 호출 시점의 테이블 상태를 반영하며, 지속적으로 반영되지 않는다. | 구조 편집 후에 Table.AutoFit(AutoFitBehavior)을(를) 다시 호출하십시오. |
| 병합된 것처럼 보이는 인접 셀은 별개의 셀로 동작한다. | 셀은 너비만으로 매치되었고, CellMerge으로 표시되지 않았다. | Table.ConvertToHorizontallyMergedCells()을(를) 호출하거나, CellFormat.HorizontalMerge / VerticalMerge를 명시적으로 설정하십시오. |
FAQ
DocumentBuilder를 사용하여 처음부터 표를 만드는 방법은 무엇인가요?
StartTable()을 호출하고, 행의 각 셀에 대해 InsertCell()을 수행하고, 행을 닫으려면 EndRow()을 사용하고, 추가 행에 대해 반복한 다음, 마지막으로 테이블을 닫으려면 EndTable()을 사용합니다.
고정 너비 대신 백분율 기반 테이블 너비를 설정하려면 어떻게 해야 하나요?
PreferredWidth.FromPoints(value) 대신 Table.PreferredWidth = PreferredWidth.FromPercent(value)을 할당합니다.
셀이나 행의 모든 서식을 어떻게 초기화합니까?
셀의 CellFormat에 CellFormat.ClearFormatting()을 호출하거나, 행의 RowFormat에 RowFormat.ClearFormatting()을 호출합니다.
전체 테이블에 대해 한 번에 테두리와 음영을 설정하려면 어떻게 해야 하나요?
모든 면에 균일한 테두리를 적용하려면 Table.SetBorders()을 사용하고, 한 면씩 적용하려면 Table.SetBorder()을 사용하며, 균일한 음영을 적용하려면 Table.SetShading()을 사용합니다; ClearBorders()와 ClearShading()는 이를 초기화합니다.
API Reference 요약
| 클래스 / 열거형 | 설명 |
|---|---|
Table | 테이블 노드; Rows, AutoFit(), SetBorders(), SetShading(), PreferredWidth |
Row | 테이블 행 노드; Cells, RowFormat, EnsureMinimum() |
Cell | 테이블 셀 노드; CellFormat, EnsureMinimum() |
TableCollection / RowCollection / CellCollection | Table / Row / Cell 노드의 타입별 컬렉션 |
CellFormat | 셀당 서식: 테두리, 음영, 여백, 병합 상태, 수직 정렬 |
RowFormat | 행당 서식: 테두리, 높이, 페이지 나누기 동작 |
PreferredWidth / PreferredWidthType | 표 또는 셀 너비 값과 그 단위 (auto, percent, points) |
AutoFitBehavior | Table.AutoFit()가 표와 셀의 크기를 조정하는 방법 |
CellMerge / CellVerticalAlignment | 가로/세로 셀 병합 상태 및 세로 콘텐츠 정렬 |
TableAlignment / TableStyleOptions / TextWrapping | 전체 테이블 정렬, 스타일 적용 및 텍스트 래핑 동작 |
DocumentBuilder.StartTable / InsertCell / EndRow / EndTable | 커서 기반 테이블 구성 |