.NET에서 프레젠테이션 표 관리
소개
PowerPoint의 표는 정보를 효율적으로 표시하고 전달하는 방법입니다. 행과 열로 구성된 셀 그리드에 있는 정보는 직관적이고 이해하기 쉽습니다.
Aspose.Slides는 Table 클래스, ITable 인터페이스, Cell 클래스, ICell 인터페이스 및 기타 유형을 제공하여 다양한 프레젠테이션에서 표를 만들고, 업데이트하고, 관리할 수 있도록 합니다.
스크래치에서 테이블 만들기
- Presentation 클래스의 인스턴스를 생성합니다.
- 인덱스를 통해 슬라이드 참조를 가져옵니다.
columnWidth배열을 정의합니다.rowHeight배열을 정의합니다.- AddTable 메서드를 사용하여 슬라이드에 ITable 객체를 추가합니다.
- 각 ICell을 순회하면서 위, 아래, 오른쪽, 왼쪽 테두리에 서식을 적용합니다.
- 표 첫 번째 행의 처음 두 셀을 병합합니다.
- ICell의 TextFrame에 접근합니다.
- TextFrame에 텍스트를 추가합니다.
- 수정된 프레젠테이션을 저장합니다.
이 C# 코드는 프레젠테이션에 표를 만드는 방법을 보여줍니다:
// PPTX 파일을 나타내는 Presentation 클래스를 인스턴스화합니다
Presentation pres = new Presentation();
// 첫 번째 슬라이드에 액세스합니다
ISlide sld = pres.Slides[0];
// 열 너비와 행 높이를 정의합니다
double[] dblCols = { 50, 50, 50 };
double[] dblRows = { 50, 30, 30, 30, 30 };
// 슬라이드에 표 모양을 추가합니다
ITable tbl = sld.Shapes.AddTable(100, 50, dblCols, dblRows);
// 각 셀에 대한 테두리 형식을 설정합니다
for (int row = 0; row < tbl.Rows.Count; row++)
{
for (int cell = 0; cell < tbl.Rows[row].Count; cell++)
{
tbl.Rows[row][cell].CellFormat.BorderTop.FillFormat.FillType = FillType.Solid;
tbl.Rows[row][cell].CellFormat.BorderTop.FillFormat.SolidFillColor.Color = Color.Red;
tbl.Rows[row][cell].CellFormat.BorderTop.Width = 5;
tbl.Rows[row][cell].CellFormat.BorderBottom.FillFormat.FillType = (FillType.Solid);
tbl.Rows[row][cell].CellFormat.BorderBottom.FillFormat.SolidFillColor.Color= Color.Red;
tbl.Rows[row][cell].CellFormat.BorderBottom.Width =5;
tbl.Rows[row][cell].CellFormat.BorderLeft.FillFormat.FillType = FillType.Solid;
tbl.Rows[row][cell].CellFormat.BorderLeft.FillFormat.SolidFillColor.Color =Color.Red;
tbl.Rows[row][cell].CellFormat.BorderLeft.Width = 5;
tbl.Rows[row][cell].CellFormat.BorderRight.FillFormat.FillType = FillType.Solid;
tbl.Rows[row][cell].CellFormat.BorderRight.FillFormat.SolidFillColor.Color = Color.Red;
tbl.Rows[row][cell].CellFormat.BorderRight.Width = 5;
}
}
// 행 1의 셀 1과 2를 병합합니다
tbl.MergeCells(tbl.Rows[0][0], tbl.Rows[1][1], false);
// 병합된 셀에 텍스트를 추가합니다
tbl.Rows[0][0].TextFrame.Text = "Merged Cells";
// 프레젠테이션을 디스크에 저장합니다
pres.Save("table.pptx", SaveFormat.Pptx);
표준 표에서 번호 매기기
표준 표에서는 셀 번호 매김이 직관적이며 0부터 시작합니다. 표의 첫 번째 셀은 0,0(열 0, 행 0)으로 인덱싱됩니다.
예를 들어, 4열 4행 표의 셀 번호는 다음과 같습니다:
| (0, 0) | (1, 0) | (2, 0) | (3, 0) |
|---|---|---|---|
| (0, 1) | (1, 1) | (2, 1) | (3, 1) |
| (0, 2) | (1, 2) | (2, 2) | (3, 2) |
| (0, 3) | (1, 3) | (2, 3) | (3, 3) |
이 C# 코드는 표의 셀 번호 지정 방법을 보여줍니다:
// PPTX 파일을 나타내는 Presentation 클래스를 인스턴스화합니다
using (Presentation pres = new Presentation())
{
// 첫 번째 슬라이드에 액세스합니다
ISlide sld = pres.Slides[0];
// 열 너비와 행 높이를 정의합니다
double[] dblCols = { 70, 70, 70, 70 };
double[] dblRows = { 70, 70, 70, 70 };
// 슬라이드에 표 모양을 추가합니다
ITable tbl = sld.Shapes.AddTable(100, 50, dblCols, dblRows);
// 각 셀에 대한 테두리 형식을 설정합니다
foreach (IRow row in tbl.Rows)
{
foreach (ICell cell in row)
{
cell.CellFormat.BorderTop.FillFormat.FillType = FillType.Solid;
cell.CellFormat.BorderTop.FillFormat.SolidFillColor.Color = Color.Red;
cell.CellFormat.BorderTop.Width = 5;
cell.CellFormat.BorderBottom.FillFormat.FillType = FillType.Solid;
cell.CellFormat.BorderBottom.FillFormat.SolidFillColor.Color = Color.Red;
cell.CellFormat.BorderBottom.Width = 5;
cell.CellFormat.BorderLeft.FillFormat.FillType = FillType.Solid;
cell.CellFormat.BorderLeft.FillFormat.SolidFillColor.Color = Color.Red;
cell.CellFormat.BorderLeft.Width = 5;
cell.CellFormat.BorderRight.FillFormat.FillType = FillType.Solid;
cell.CellFormat.BorderRight.FillFormat.SolidFillColor.Color = Color.Red;
cell.CellFormat.BorderRight.Width = 5;
}
}
// 프레젠테이션을 디스크에 저장합니다
pres.Save("StandardTables_out.pptx", SaveFormat.Pptx);
}
기존 테이블에 접근
-
Presentation 클래스의 인스턴스를 생성합니다.
-
인덱스를 통해 표가 포함된 슬라이드에 대한 참조를 가져옵니다.
-
ITable 객체를 생성하고 null로 설정합니다.
-
모든 IShape 객체를 순회하면서 표를 찾습니다.
슬라이드에 단일 표만 포함되어 있다고 생각되는 경우 포함된 모든 모양을 확인하면 됩니다. 모양이 표로 식별되면 이를 Table 객체로 타입 캐스팅할 수 있습니다. 그러나 슬라이드에 여러 표가 포함되어 있는 경우 원하는 표를 AlternativeText를 통해 검색하는 것이 좋습니다.
-
ITable 객체를 사용하여 표를 작업합니다. 아래 예제에서는 표에 새 행을 추가했습니다.
-
수정된 프레젠테이션을 저장합니다.
이 C# 코드는 기존 표에 접근하고 작업하는 방법을 보여줍니다:
// PPTX 파일을 나타내는 Presentation 클래스를 인스턴스화합니다
using (Presentation pres = new Presentation("UpdateExistingTable.pptx"))
{
// 첫 번째 슬라이드에 액세스합니다
ISlide sld = pres.Slides[0];
// null TableEx 를 초기화합니다
ITable tbl = null;
// 모양을 순회하면서 찾은 표에 대한 참조를 설정합니다
foreach (IShape shp in sld.Shapes)
if (shp is ITable)
tbl = (ITable)shp;
// 두 번째 행의 첫 번째 열에 텍스트를 설정합니다
tbl[0, 1].TextFrame.Text = "New";
// 수정된 프레젠테이션을 디스크에 저장합니다
pres.Save("table1_out.pptx", Aspose.Slides.Export.SaveFormat.Pptx);
}
표에서 텍스트 정렬
- Presentation 클래스의 인스턴스를 생성합니다.
- 인덱스를 통해 슬라이드 참조를 가져옵니다.
- 슬라이드에 ITable 객체를 추가합니다.
- 표에서 ITextFrame 객체에 접근합니다.
- ITextFrame의 IParagraph에 접근합니다.
- 텍스트를 수직으로 정렬합니다.
- 수정된 프레젠테이션을 저장합니다.
이 C# 코드는 표 내부 텍스트를 정렬하는 방법을 보여줍니다:
// Presentation 클래스의 인스턴스를 생성합니다
Presentation presentation = new Presentation();
// 첫 번째 슬라이드를 가져옵니다
ISlide slide = presentation.Slides[0];
// 열 너비와 행 높이를 정의합니다
double[] dblCols = { 120, 120, 120, 120 };
double[] dblRows = { 100, 100, 100, 100 };
// 슬라이드에 표 모양을 추가합니다
ITable tbl = slide.Shapes.AddTable(100, 50, dblCols, dblRows);
tbl[1, 0].TextFrame.Text = "10";
tbl[2, 0].TextFrame.Text = "20";
tbl[3, 0].TextFrame.Text = "30";
// 텍스트 프레임에 접근합니다
ITextFrame txtFrame = tbl[0, 0].TextFrame;
// 텍스트 프레임용 Paragraph 객체를 생성합니다
IParagraph paragraph = txtFrame.Paragraphs[0];
// 문단용 Portion 객체를 생성합니다
IPortion portion = paragraph.Portions[0];
portion.Text = "Text here";
portion.PortionFormat.FillFormat.FillType = FillType.Solid;
portion.PortionFormat.FillFormat.SolidFillColor.Color = Color.Black;
// 텍스트를 수직으로 정렬합니다
ICell cell = tbl[0, 0];
cell.TextAnchorType = TextAnchorType.Center;
cell.TextVerticalType = TextVerticalType.Vertical270;
// 프레젠테이션을 디스크에 저장합니다
presentation.Save("Vertical_Align_Text_out.pptx", SaveFormat.Pptx);
표 수준에서 텍스트 서식 지정
- Presentation 클래스의 인스턴스를 생성합니다.
- 인덱스를 통해 슬라이드 참조를 가져옵니다.
- 슬라이드에서 ITable 객체에 접근합니다.
- 텍스트의 FontHeight를 설정합니다.
- Alignment와 MarginRight를 설정합니다.
- TextVerticalType을 설정합니다.
- 수정된 프레젠테이션을 저장합니다.
이 C# 코드는 표의 텍스트에 원하는 서식 옵션을 적용하는 방법을 보여줍니다:
// Presentation 클래스의 인스턴스를 생성합니다
Presentation presentation = new Presentation();
ISlide slide = presentation.Slides[0];
ITable someTable = presentation.Slides[0].Shapes[0] as ITable; // 첫 번째 슬라이드의 첫 번째 모양이 표라고 가정합니다
// 표 셀들의 글꼴 높이를 설정합니다
PortionFormat portionFormat = new PortionFormat();
portionFormat.FontHeight = 25;
someTable.SetTextFormat(portionFormat);
// 표 셀들의 텍스트 정렬과 오른쪽 여백을 한 번에 설정합니다
ParagraphFormat paragraphFormat = new ParagraphFormat();
paragraphFormat.Alignment = TextAlignment.Right;
paragraphFormat.MarginRight = 20;
someTable.SetTextFormat(paragraphFormat);
// 표 셀들의 텍스트 세로 방향을 설정합니다
TextFrameFormat textFrameFormat = new TextFrameFormat();
textFrameFormat.TextVerticalType = TextVerticalType.Vertical;
someTable.SetTextFormat(textFrameFormat);
presentation.Save("result.pptx", Aspose.Slides.Export.SaveFormat.Pptx);
표 스타일 속성 가져오기
Aspose.Slides를 사용하면 표의 스타일 속성을 검색하여 다른 표에 적용하거나 다른 곳에서 사용할 수 있습니다. 이 C# 코드는 표 사전 설정 스타일에서 스타일 속성을 가져오는 방법을 보여줍니다:
using (Presentation pres = new Presentation())
{
ITable table = pres.Slides[0].Shapes.AddTable(10, 10, new double[] { 100, 150 }, new double[] { 5, 5, 5 });
table.StylePreset = TableStylePreset.DarkStyle1; // 기본 스타일 프리셋 테마를 변경합니다
pres.Save("table.pptx", SaveFormat.Pptx);
}
표의 가로세로 비율 잠금
기하학적 도형의 가로세로 비율은 서로 다른 차원에서의 크기 비율을 의미합니다. Aspose.Slides는 AspectRatioLocked 속성을 제공하여 표 및 기타 도형에 대해 가로세로 비율 잠금을 설정할 수 있게 합니다.
이 C# 코드는 표의 가로세로 비율을 잠그는 방법을 보여줍니다:
using (Presentation pres = new Presentation("pres.pptx"))
{
ITable table = (ITable)pres.Slides[0].Shapes[0];
Console.WriteLine($"Lock aspect ratio set: {table.ShapeLock.AspectRatioLocked}");
table.ShapeLock.AspectRatioLocked = !table.ShapeLock.AspectRatioLocked; // 반전
Console.WriteLine($"Lock aspect ratio set: {table.ShapeLock.AspectRatioLocked}");
pres.Save("pres-out.pptx", SaveFormat.Pptx);
}
FAQ
전체 표와 셀 내 텍스트에 대해 오른쪽에서 왼쪽(RTL) 읽기 방향을 활성화할 수 있나요?
예. 표는 RightToLeft 속성을 공개하며, 단락은 ParagraphFormat.RightToLeft 속성을 가집니다. 두 속성을 모두 사용하면 셀 내부의 올바른 RTL 순서와 렌더링을 보장할 수 있습니다.
최종 파일에서 사용자가 표를 움직이거나 크기를 조정하지 못하도록 방지하려면 어떻게 해야 하나요?
shape locks를 사용하여 이동, 크기 조정, 선택 등을 비활성화할 수 있습니다. 이러한 잠금은 표에도 적용됩니다.
셀 내부에 이미지를 배경으로 삽입하는 것이 지원되나요?
예. 셀에 picture fill을 설정하면 이미지가 선택한 모드(늘이기 또는 타일)대로 셀 영역을 덮습니다.