Java를 사용하여 여러 Excel 파일을 하나로 결합

Excel 통합 문서가 여러 개 있고 보고를 위해 하나의 파일로 결합하거나 데이터를 한 곳에 보관하려고 합니다. Java 개발자는 프로그래밍 방식으로 여러 Excel 파일을 하나의 파일로 쉽게 병합할 수 있습니다. 이 기사에서는 Java를 사용하여 여러 Excel 파일을 하나로 결합하는 방법을 배웁니다.

이 문서에서는 다음 주제를 논의/다룹니다.

Excel 파일을 병합하는 Java API

여러 Excel 파일을 병합하기 위해 Aspose.Cells for Java API를 사용합니다. 이 API를 사용하면 Microsoft Excel에 의존하지 않고 스프레드시트를 생성, 조작, 변환, 보호 또는 인쇄할 수 있습니다. Java 응용 프로그램에서 프로그래밍 방식으로 Excel 자동화 기능을 수행할 수 있습니다.

API의 JAR을 다운로드하거나 Maven 기반 Java 애플리케이션에 다음 pom.xml 구성을 추가하여 아래에 언급된 코드 예제를 시도할 수 있습니다.

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-cells</artifactId>
    <version>21.8</version>
</dependency>

Java를 사용하여 여러 Excel 파일을 하나로 결합

아래에 언급된 단계에 따라 프로그래밍 방식으로 여러 Excel 파일을 단일 파일로 쉽게 결합할 수 있습니다.

  • 첫 번째 소스 파일로 Workbook 클래스의 인스턴스 생성
  • 두 번째 소스 파일로 Workbook 클래스의 인스턴스 생성
  • 두 개 이상의 파일을 결합하려면 위의 단계를 반복하십시오.
  • 두 번째 소스 파일 인스턴스와 함께 combine() 메서드를 호출합니다.
  • 모든 소스 파일에 대해 위 단계를 하나씩 반복합니다.
  • Workbook 클래스의 save() 메서드를 호출하여 출력 파일을 저장합니다.

다음 코드 샘플은 Java를 사용하여 여러 Excel 파일을 하나의 파일로 결합하는 방법을 보여줍니다.

// 첫 번째 엑셀 파일을 엽니다.
Workbook SourceBook1 = new Workbook("C:\\Files\\Quarter_1.xlsx");

// 두 번째 엑셀 파일을 엽니다.
Workbook SourceBook2 = new Workbook("C:\\Files\\Quarter_2.xlsx");

// 세 번째 엑셀 파일을 엽니다.
Workbook SourceBook3 = new Workbook("C:\\Files\\Quarter_3.xlsx");

// 두 번째 Excel 파일의 워크시트를 첫 번째 통합 문서에 복사합니다.
SourceBook1.combine(SourceBook2);

// 세 번째 Excel 파일의 워크시트를 첫 번째 통합 문서에 복사합니다.
SourceBook1.combine(SourceBook3);

// 업데이트된 첫 번째 Excel 파일을 새 파일로 저장합니다.
SourceBook1.save("C:\\Files\\CombinedFile.xlsx");
Java를 사용하여 여러 Excel 파일을 하나로 결합

Java를 사용하여 여러 Excel 파일을 하나로 결합

API의 Workbook 클래스는 Excel 스프레드시트를 만드는 데 사용되는 기본 클래스입니다. 기본 Excel 파일을 열고 저장할 수 있습니다. 또한 Excel 스프레드시트로 작업하기 위한 여러 속성과 방법을 제공합니다. 이 클래스의 combine() 메서드는 현재 통합 문서를 다른 Workbook 개체와 결합합니다. Workbook 클래스의 save() 메서드는 출력 파일을 지정된 파일 경로에 저장합니다.

Java를 사용하여 여러 Excel 파일의 특정 워크시트를 하나로 결합

아래에 언급된 단계에 따라 프로그래밍 방식으로 여러 Excel 파일의 특정 워크시트를 단일 파일로 쉽게 결합할 수 있습니다.

  • 소스 파일 1에 대한 Workbook 클래스의 인스턴스 만들기
  • 소스 파일 2에 대한 Workbook 클래스의 인스턴스 만들기
  • 두 개 이상의 파일에서 워크시트를 결합하려면 위의 단계를 반복하십시오.
  • 대상 파일에 대한 Workbook 클래스의 인스턴스 만들기
  • WorksheetCollection 클래스의 add() 메서드를 사용하여 워크시트 추가
  • copy() 메서드를 호출하여 지정된 워크시트를 원본 파일 1에서 대상 파일로 복사합니다.
  • copy() 메서드를 호출하여 지정된 워크시트를 원본 파일 2에서 대상 파일로 복사합니다.
  • setName() 메서드를 사용하여 대상 파일의 워크시트 이름 바꾸기
  • Workbook 클래스의 save() 메서드를 호출하여 대상 파일을 저장합니다.

다음 코드 샘플은 Java를 사용하여 여러 Excel 파일의 특정 워크시트를 하나의 파일로 결합하는 방법을 보여줍니다.

String sourceFile1 = "Quarter_1.xlsx";
String sourceFile2 = "Quarter_2.xlsx";

// 첫 번째 Excel 파일을 엽니다.
Workbook excelA = new Workbook("C:\\Files\\" + sourceFile1);

// 두 번째 Excel 파일을 엽니다.
Workbook excelB = new Workbook("C:\\Files\\" + sourceFile2);

// 대상 통합 문서를 만듭니다.
Workbook destWorkbook = new Workbook();

// 첫 번째 워크시트는 기본적으로 통합 문서에 추가됩니다. 두 번째 워크시트를 추가합니다.
destWorkbook.getWorksheets().add();

// 첫 번째 Excel 파일의 Jan 워크시트를 대상 파일에 복사합니다.
destWorkbook.getWorksheets().get(0).copy(excelA.getWorksheets().get("Jan"));

// 두 번째 Excel 파일의 Jul 워크시트를 대상 파일에 복사합니다.
destWorkbook.getWorksheets().get(1).copy(excelB.getWorksheets().get("Jul"));

// 기본적으로 워크시트 이름은 각각 "Sheet1" 및 "Sheet2"입니다.
// 의미 있는 이름을 지정해 보겠습니다.
destWorkbook.getWorksheets().get(0).setName(sourceFile1 + " - Jan");
destWorkbook.getWorksheets().get(1).setName(sourceFile2 + " - Jul");

// 대상 파일을 저장합니다.
destWorkbook.save("C:\\Files\\CombinedSpecificSheetsInFile.xlsx");
Java를 사용하여 여러 Excel 파일의 특정 워크시트를 하나로 결합

Java를 사용하여 여러 Excel 파일의 특정 워크시트를 하나로 결합

Workbook 클래스의 getWorksheets() 속성 메서드는 Workbook에 있는 모든 워크시트의 컬렉션을 반환합니다. add() 메서드를 사용하여 워크시트 컬렉션에 워크시트를 추가할 수 있습니다.

이 API의 Worksheet 클래스는 단일 워크시트를 나타냅니다. 워크시트 작업을 위한 여러 속성과 메서드를 제공합니다. 이 클래스의 copy() 메서드는 다른 워크시트의 내용과 형식을 복사합니다. Worksheet 클래스는 인덱스나 이름으로 특정 워크시트를 가져오는 get() 메서드도 제공합니다. setName() 속성 메서드는 워크시트의 이름을 설정합니다.

Java를 사용하여 여러 워크시트를 하나의 워크시트로 병합

아래에 언급된 단계에 따라 프로그래밍 방식으로 Excel 파일의 여러 워크시트를 단일 워크시트로 쉽게 병합할 수 있습니다.

  • 소스 파일에 대한 Workbook 클래스의 인스턴스 생성
  • add() 메서드를 사용하여 새 워크시트 추가
  • 소스 워크시트를 반복하고 다음을 수행합니다.
    • createRange() 메서드를 사용하여 하나의 워크시트에 대한 셀 및 열 범위 만들기
    • copy() 메서드를 사용하여 소스 범위에서 대상 범위로 데이터 복사
  • Workbook 클래스의 save() 메서드를 호출하여 출력 파일을 저장합니다.

다음 코드 샘플은 Java를 사용하여 여러 워크시트를 하나의 워크시트로 병합하는 방법을 보여줍니다.

// 워크시트가 포함된 Excel 파일을 엽니다.
// 1월, 2월, 3월, 4월
Workbook workbook = new Workbook("C:\\Files\\Quarter_1.xlsx");

// Summary_sheet라는 워크시트를 추가합니다.
Worksheet summarySheet = workbook.getWorksheets().add("Summary_sheet");

// 소스 워크시트를 반복하여 데이터를
// 요약 워크시트
String[] nameOfSourceWorksheets = { "Jan", "Feb", "Mar", "Apr" };
int totalRowCount = 0;

for (String sheetName : nameOfSourceWorksheets)
{
  // 워크시트 가져오기
    Worksheet sourceSheet = workbook.getWorksheets().get(sheetName);

    Range sourceRange = null;
    Range destRange = null;

    // Jan 워크시트의 경우 모든 행과 열을 포함합니다.
    if (sheetName.equals("Jan"))
    {
        sourceRange = sourceSheet.getCells().getMaxDisplayRange();

        destRange = summarySheet.getCells().createRange(
                sourceRange.getFirstRow() + totalRowCount,
                sourceRange.getFirstColumn(),
                sourceRange.getRowCount(),
                sourceRange.getColumnCount());
    }
    // 다른 워크시트의 경우,
    // 첫 번째 행(제목 포함)을 제외합니다.
    else
    {
        int mdatarow = sourceSheet.getCells().getMaxDataRow(); // Zero-based
        int mdatacol = sourceSheet.getCells().getMaxDataColumn(); // Zero-based
        sourceRange = sourceSheet.getCells().createRange(0 + 1, 0, mdatarow, mdatacol + 1);

        destRange = summarySheet.getCells().createRange(
                sourceRange.getFirstRow() + totalRowCount -1,
                sourceRange.getFirstColumn(),
                sourceRange.getRowCount(),
                sourceRange.getColumnCount());
    }

    // 데이터, 서식, 그리기 개체 등을 복사합니다.
    // 소스 범위에서 대상 범위로.
    destRange.copy(sourceRange);
    totalRowCount = sourceRange.getRowCount() + totalRowCount;
}

// 통합 문서 저장 
workbook.save("C:\\Files\\Summarized.xlsx");
Java를 사용하여 여러 워크시트를 하나의 워크시트로 병합

Java를 사용하여 여러 워크시트를 하나의 워크시트로 병합

Worksheet 클래스의 getCells() 속성 메서드는 워크시트에서 사용할 수 있는 Cell의 컬렉션을 제공합니다. API의 Cells 클래스는 Cell, Row 등과 같이 셀과 관련된 객체의 모음을 나타냅니다. getMaxDisplayRange() 속성 Cells 클래스의 메서드는 데이터, 병합된 셀 및 모양을 포함하는 최대 범위를 제공합니다. Range 클래스는 스프레드시트 내의 셀 범위를 나타냅니다.

Cells 클래스는 셀 범위를 만드는 다음 메서드를 제공합니다.

  • createRange(int firstIndex, int number, boolean isVertical) 메서드를 사용하여 셀 행 또는 셀 열에서 Range 개체를 만듭니다.
  • createRange(int firstRow, int firstColumn, int totalRows, int totalColumns) 메서드를 사용하여 셀 범위에서 Range 개체를 만듭니다.
  • createRange(java.lang.String address) 메소드는 범위의 주소에서 Range 객체를 생성합니다.
  • createRange(java.lang.String upperLeftCell, java.lang.String lowerRightCell) 메소드는 셀 범위에서 Range 객체를 생성합니다.

Range 클래스의 copy() 메서드는 모든 종류의 데이터(수식 포함), 서식, 그리기 개체 등을 원본 범위에서 대상 범위로 복사합니다.

Java를 사용하여 여러 워크시트의 열을 하나로 통합

아래에 언급된 단계에 따라 프로그래밍 방식으로 여러 워크시트의 열을 단일 워크시트로 쉽게 병합할 수 있습니다.

  • 소스 파일에 대한 Workbook 클래스의 인스턴스 생성
  • add() 메서드를 사용하여 새 워크시트 추가
  • 소스 워크시트를 반복하고 다음을 수행합니다.
    • 원본 워크시트 셀 및 열 인덱스와 함께 copyColumn() 메서드를 사용하여 모든 열을 하나씩 복사합니다.
  • Workbook 클래스의 save() 메서드를 호출하여 출력 파일을 저장합니다.

다음 코드 샘플은 Java를 사용하여 여러 워크시트의 열을 하나의 워크시트로 통합하는 방법을 보여줍니다.

// 통합 문서를 엽니다.
Workbook workbook = new Workbook("C:\\Files\\sample.xlsx");

// Summary_sheet라는 워크시트를 추가합니다.
Worksheet summarySheet = workbook.getWorksheets().add("Summary_sheet");

// 열을 복사하기 위해 워크시트를 반복합니다.
// 요약 워크시트
String[] nameOfSourceWorksheets = { "Products", "Sales", "Customers" };
int totalCol = 0; 

for (String sheetName : nameOfSourceWorksheets) {
  Worksheet sourceSheet = workbook.getWorksheets().get(sheetName);

  if (sheetName.equals("Products")) {
    // 워크시트 열 컬렉션 가져오기
    ColumnCollection columns = sourceSheet.getCells().getColumns();

    // 열을 summaySheet에 복사
    for (Column column : (Iterable<Column>) columns)
    {
      summarySheet.getCells().copyColumn(sourceSheet.getCells(), column.getIndex(), totalCol);
      totalCol = totalCol + 1;
    }
    }
  else {
    // 워크시트 열 컬렉션 가져오기
    ColumnCollection columns = sourceSheet.getCells().getColumns();

    // 열을 summaySheet에 복사
    for (Column column : (Iterable<Column>) columns)
    {
      summarySheet.getCells().copyColumn(sourceSheet.getCells(), column.getIndex(), totalCol);
      totalCol = totalCol + 1;
    }
  }
}

// 엑셀 파일을 저장합니다.
workbook.save("C:\\Files\\CopyingColumns_out.xlsx");
Java를 사용하여 여러 워크시트의 열을 하나로 통합

Java를 사용하여 여러 워크시트의 열을 하나로 통합

Cell 클래스의 getColumns() 속성 메서드는 워크시트에서 사용할 수 있는 열 컬렉션을 제공합니다. ColumnCollection 클래스는 워크시트의 개별 열 모음을 나타내는 반면 Column 클래스는 워크시트의 단일 열을 나타냅니다.

Cells 클래스의 copyColumn() 메서드는 전체 열의 데이터와 형식을 복사합니다. Cells 클래스는 또한 PasteOptions, 열 번호, 소스 및 대상 합계 열 등을 사용하여 데이터를 복사하는 오버로드된 copyColumn() 메서드를 제공합니다.

무료 라이선스 받기

임시 무료 라이선스를 요청하면 평가 제한 없이 API를 사용해 볼 수 있습니다.

결론

이 기사에서는 여러 Excel 파일을 하나의 파일로 결합하는 방법을 배웠습니다. 또한 Java를 사용하여 여러 Excel 파일의 특정 워크시트를 결합하는 방법도 배웠습니다. 또한 여러 워크시트를 프로그래밍 방식으로 단일 워크시트로 병합하는 방법을 배웠습니다. 이 기사에서는 Java를 사용하여 여러 워크시트의 열을 하나로 통합하는 방법도 설명했습니다. 문서를 사용하여 Java API용 Aspose.Cells에 대해 자세히 알아볼 수 있습니다. 모호한 부분이 있는 경우 포럼에서 언제든지 문의해 주십시오.

또한보십시오