Java를 사용하여 Word 문서에 테이블 만들기

Microsoft Word는 다양한 유형의 문서를 만드는 데 사용되는 널리 사용되는 워드 프로세싱 응용 프로그램입니다. 이러한 문서에는 텍스트, 이미지, 표, 차트를 비롯한 여러 유형의 요소가 포함될 수 있습니다. Java에서 문서 생성 및 조작을 자동화하려면 Word 문서 내에 테이블을 생성하기 위한 간편한 솔루션이 필요할 수 있습니다. 따라서 이번 블로그 게시물에서는 Java 애플리케이션에서 Word 문서에 테이블을 만드는 방법을 살펴보겠습니다.

Word 문서에 테이블을 생성하는 Java 라이브러리

Aspose.Words for Java는 Java 개발자가 Microsoft Word 문서를 프로그래밍 방식으로 작업할 수 있도록 하는 API입니다. Word 문서 생성, 수정 및 조작을 위한 광범위한 기능을 제공하므로 문서 생성 및 처리 작업을 자동화하는 데 유용한 도구입니다. 이 라이브러리를 사용하여 Word 문서에 표를 삽입합니다.

라이브러리를 다운로드하거나 다음 Maven 구성을 사용하여 설치할 수 있습니다.

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-words</artifactId>
    <version>23.10</version>
    <classifier>jdk17</classifier>
</dependency>

Java의 Word 문서에 테이블 만들기

Aspose.Words for Java를 사용하여 Word 문서에 테이블을 만드는 방법에는 두 가지가 있습니다.

  • DocumentBuilder 사용
  • DOM(문서 개체 모델) 사용

귀하의 요구 사항에 가장 적합한 방법을 선택할 수 있습니다. 이제 각 방법을 자세히 살펴보겠습니다.

DocumentBuilder를 사용하여 테이블 만들기

DocumentBuilder 클래스는 처음부터 동적 문서를 생성하거나 기존 문서를 처리하는 빠르고 쉬운 방법을 제공합니다. 텍스트, 확인란, OLE 개체, 단락, 목록, 표, 이미지 등과 같은 다양한 콘텐츠 요소를 삽입하기 위한 다양한 기능을 제공합니다.

다음은 DocumentBuilder 클래스를 사용하여 Java의 Word 문서에 테이블을 만드는 단계입니다.

  • Word 문서를 로드하거나 생성하려면 Document 클래스의 개체를 만듭니다.
  • DocumentBuilder 클래스의 개체를 만듭니다.
  • DocumentBuilder.startTable() 메서드를 사용하여 테이블을 시작합니다.
  • DocumentBuilder.insertCell() 메서드를 사용하여 셀을 삽입합니다.
  • (선택사항) 셀에 글꼴, 정렬 등 서식을 적용합니다.
  • DocumentBuilder.write() 메서드를 사용하여 셀에 텍스트를 삽입합니다.
  • 필요에 따라 셀과 텍스트를 셀에 삽입하는 것을 반복합니다.
  • DocumentBuilder.endRow() 메서드를 사용하여 셀 삽입을 완료하면 행을 종료합니다.
  • DocumentBuilder.endTable() 메서드를 사용하여 모든 행을 삽입한 경우 테이블을 종료합니다.
  • Document.save() 메서드를 사용하여 Word 문서를 저장합니다.

다음 코드 조각은 Java를 사용하여 Word 문서에 테이블을 만드는 방법을 보여줍니다.

// 문서를 생성하거나 로드합니다.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// 새 테이블을 만들고 셀을 삽입합니다.
Table table = builder.startTable();
builder.insertCell();

// 테이블 전체 서식은 테이블에 행이 하나 이상 존재한 후에 적용되어야 합니다.
table.setLeftIndent(20.0);

// 높이를 설정하고 머리글 행의 높이 규칙을 정의합니다.
builder.getRowFormat().setHeight(40.0);
builder.getRowFormat().setHeightRule(HeightRule.AT_LEAST);

builder.getCellFormat().getShading().setBackgroundPatternColor(new Color((198), (217), (241)));
builder.getParagraphFormat().setAlignment(ParagraphAlignment.CENTER);
builder.getFont().setSize(16.0);
builder.getFont().setName("Arial");
builder.getFont().setBold(true);

builder.getCellFormat().setWidth(100.0);
builder.write("Header Row,\n Cell 1");

// 이 셀의 너비는 이전 셀에서 상속되므로 지정할 필요가 없습니다.
builder.insertCell();
builder.write("Header Row,\n Cell 2");

builder.insertCell();
builder.getCellFormat().setWidth(200.0);
builder.write("Header Row,\n Cell 3");
builder.endRow();

builder.getCellFormat().getShading().setBackgroundPatternColor(Color.WHITE);
builder.getCellFormat().setWidth(100.0);
builder.getCellFormat().setVerticalAlignment(CellVerticalAlignment.CENTER);

// 높이를 재설정하고 테이블 본체에 대해 다른 높이 규칙을 정의합니다.
builder.getRowFormat().setHeight(30.0);
builder.getRowFormat().setHeightRule(HeightRule.AUTO);
builder.insertCell();
        
// 글꼴 서식을 재설정합니다.
builder.getFont().setSize(12.0);
builder.getFont().setBold(false);

builder.write("Row 1, Cell 1 Content");
builder.insertCell();
builder.write("Row 1, Cell 2 Content");

builder.insertCell();
builder.getCellFormat().setWidth(200.0);
builder.write("Row 1, Cell 3 Content");
builder.endRow();

builder.insertCell();
builder.getCellFormat().setWidth(100.0);
builder.write("Row 2, Cell 1 Content");

builder.insertCell();
builder.write("Row 2, Cell 2 Content");

builder.insertCell();
builder.getCellFormat().setWidth(200.0);
builder.write("Row 2, Cell 3 Content.");
builder.endRow();

// 탁자.
builder.endTable();

// 문서를 저장합니다.
doc.save("table.docx");

다음은 위의 코드 샘플을 사용하여 생성한 테이블의 스크린샷입니다.

Word 문서의 표

DOM을 사용하여 테이블 만들기

문서 개체 모델(DOM)은 Word 문서의 내용과 서식을 프로그래밍 방식으로 읽고, 조작하고, 수정할 수 있는 Word 문서의 메모리 내 표현입니다. 다음 단계에서는 DOM을 사용하여 Word 문서에 테이블을 만드는 방법을 보여줍니다.

  • Word 문서를 로드하거나 생성하려면 Document 클래스의 개체를 만듭니다.
  • Table 클래스의 객체를 생성하고 Document.getFirstSection().getBody().appendChild(Table) 메서드를 사용하여 문서에 테이블을 삽입합니다.
  • Row 클래스의 객체를 생성하고 Table.appendChild(Row) 메서드를 사용하여 테이블에 삽입합니다.
  • Cell 클래스의 객체를 만들고, 서식 옵션을 설정하고, 셀에 텍스트를 추가합니다.
  • Row.appendChild(Cell) 메서드를 사용하여 행에 셀을 삽입합니다.
  • 원하는 만큼의 행에 대해 프로세스를 반복합니다.
  • Document.save() 메서드를 사용하여 Word 문서를 저장합니다.

다음 코드 조각은 Java의 Word 문서에 테이블을 만드는 방법을 보여줍니다.

// 문서를 생성하거나 로드합니다.
Document doc = new Document();
        
// 테이블 객체를 생성하는 것부터 시작합니다. 문서 객체를 전달해야 합니다.
// 각 노드의 생성자에. 이는 우리가 생성하는 모든 노드가 속해야 하기 때문입니다.
// 어떤 문서에.
Table table = new Table(doc);
doc.getFirstSection().getBody().appendChild(table);

// 여기서 EnacheMinimum을 호출하여 행과 셀을 생성할 수 있습니다. 이 방법이 사용됩니다
// 지정된 노드가 유효한지 확인합니다. 이 경우 유효한 테이블에는 최소한 하나의 행과 하나의 셀이 있어야 합니다.

// 대신 행과 테이블 생성을 직접 처리하겠습니다.
// 알고리즘 내부에 테이블을 생성하는 경우 이것이 가장 좋은 방법입니다.
Row row = new Row(doc);
row.getRowFormat().setAllowBreakAcrossPages(true);
table.appendChild(row);

// 이제 자동 맞춤 설정을 적용할 수 있습니다.
table.autoFit(AutoFitBehavior.FIXED_COLUMN_WIDTHS);

Cell cell = new Cell(doc);
cell.getCellFormat().getShading().setBackgroundPatternColor(Color.BLUE);
cell.getCellFormat().setWidth(80.0);
cell.appendChild(new Paragraph(doc));
cell.getFirstParagraph().appendChild(new Run(doc, "Row 1, Cell 1 Text"));

row.appendChild(cell);

// 그런 다음 테이블의 다른 셀과 행에 대해 프로세스를 반복합니다.
// 기존 셀과 행을 복제하여 작업 속도를 높일 수도 있습니다.
row.appendChild(cell.deepClone(false));
row.getLastCell().appendChild(new Paragraph(doc));
row.getLastCell().getFirstParagraph().appendChild(new Run(doc, "Row 1, Cell 2 Text"));

// 문서를 저장합니다.
doc.save("table.docx");

Word 문서에 중첩 표 삽입

상위 테이블의 셀 내부에 있는 중첩 테이블을 생성해야 하는 경우도 있을 수 있습니다. 복잡한 과정을 거치지 않고도 가능합니다. 먼저 상위 테이블을 만든 다음 DocumentBuilder.moveTo(Cell.getFirstParagraph()) 메서드를 호출하여 상위 테이블의 원하는 셀 내부로 컨트롤을 이동합니다. 완료되면 같은 방법으로 새 테이블을 만듭니다.

다음 코드 조각은 Java를 사용하여 Word 문서에 중첩 테이블을 만드는 방법을 보여줍니다.

// 문서를 생성하거나 로드합니다.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// 셀을 삽입합니다.
Cell cell = builder.insertCell();
builder.writeln("Outer Table Cell 1");

builder.insertCell();
builder.writeln("Outer Table Cell 2");

// 이 호출은 첫 번째 테이블 내에 중첩 테이블을 만드는 데 중요합니다. 
// 이 호출이 없으면 아래에 삽입된 셀이 외부 테이블에 추가됩니다.
builder.endTable();

// 외부 테이블의 첫 번째 셀로 이동합니다.
builder.moveTo(cell.getFirstParagraph());

// 내부 테이블을 구축합니다.
builder.insertCell();
builder.writeln("Inner Table Cell 1");
builder.insertCell();
builder.writeln("Inner Table Cell 2");
builder.endTable();

// 문서를 저장합니다.
doc.save("table.docx");

다음은 위에서 생성한 중첩 테이블의 스크린샷입니다.

Nested Table in a Word Document

Java의 HTML에서 Word 테이블 만들기

HTML 문자열을 사용하여 Word 문서에 표를 만들 수도 있으며 다음 단계를 따르세요.

  • Word 문서를 로드하거나 생성하려면 Document 클래스의 개체를 만듭니다.
  • DocumentBuilder 클래스의 개체를 만듭니다.
  • DocumentBuilder.insertHtml(String) 메서드를 사용하여 테이블의 HTML 문자열을 문서에 삽입합니다.
  • 마지막으로 Document.save() 메서드를 사용하여 문서를 저장합니다.

다음은 HTML 문자열에서 Word 테이블을 생성하는 코드 조각입니다.

// 문서를 생성하거나 로드합니다.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// AutoFitSettings는 HTML에서 삽입된 테이블에는 적용되지 않습니다.
builder.insertHtml("<table>" +
                   "<tr>" +
                   "<td>Row 1, Cell 1</td>" +
                   "<td>Row 1, Cell 2</td>" +
                   "</tr>" +
                   "<tr>" +
                   "<td>Row 2, Cell 2</td>" +
                   "<td>Row 2, Cell 2</td>" +
                   "</tr>" +
                   "</table>");

// 문서를 저장합니다.
doc.save("table.docx");

무료 라이센스 받기

평가 제한 없이 Aspose.Words for Java를 사용할 수 있는 임시 라이센스를 얻을 수 있습니다.

결론

이 블로그 게시물에서는 Java를 사용하여 Word 문서에서 테이블을 만드는 방법을 살펴보았습니다. 문서 작성기 또는 DOM을 사용하여 테이블을 생성하고, 중첩 테이블을 생성하고, HTML 문자열에서 테이블을 생성하는 방법을 살펴보았습니다. 라이브러리를 설치하고 지침을 따르면 테이블 생성 기능을 Java 애플리케이션에 쉽게 통합할 수 있습니다.

Aspose.Words for Java는 다양한 기능과 서식 옵션을 제공하므로 풍부하고 복잡한 문서를 쉽게 만들 수 있습니다. Aspose.Words for Java에 대해 자세히 알아보려면 광범위한 문서예제를 살펴보세요. 질문이 있는 경우 언제든지 포럼을 통해 알려주시기 바랍니다.

또한보십시오