이 기사에서는 C#을 사용하여 여러 Excel 통합 문서의 시트를 하나의 통합 문서로 복사하는 방법을 배웁니다. 또한 여러 워크시트의 데이터를 하나의 시트로 복사하는 방법도 배우게 됩니다. 시작하자.

여러 Excel 파일을 병합하는 C# API

.NET용 Aspose.Cells는 .NET 응용 프로그램 내에서 Excel 파일을 만들고 처리할 수 있는 잘 알려진 스프레드시트 조작 API입니다. API 바이너리를 다운로드하거나 NuGet을 사용하여 설치할 수 있습니다.

PM> Install-Package Aspose.Cells

C#을 사용하여 여러 Excel 파일을 하나로 결합

여러 Excel 파일을 하나의 파일로 병합해야 하는 경우가 있습니다. 아래와 같이 원본 통합 문서에서 대상 통합 문서로 워크시트를 복사하려고 합니다. Excel 문서는 Excel 97, Excel 2010 또는 Excel 2016과 같은 모든 버전이 될 수 있습니다.

C#을 사용하여 여러 Excel 파일을 하나로 결합

그림 1: Excel 파일 결합

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

// 첫 번째 엑셀 파일을 엽니다.
Workbook SourceBook1 = new Workbook("Excel A.xlsx");

// 두 번째 엑셀 파일을 엽니다.
Workbook SourceBook2 = new Workbook("Excel B.xlsx");

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

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

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

// 업데이트된 첫 번째 Excel 파일을 새 파일로 저장합니다.
SourceBook1.Save("CombinedFile.xlsx");

C#을 사용하여 Excel 파일의 특정 워크시트 결합

위의 코드는 원본 파일의 모든 워크시트를 대상 파일에 복사합니다. 그러나 원본 파일에서 대상 파일로 특정 워크시트를 복사할 수 있습니다. 예를 들어 두 개의 Excel 파일이 있고 각 파일에는 Sales, Employees 및 Expenses라는 세 개의 워크시트가 있습니다. 다음 그림과 같이 두 파일의 Sales 워크시트만 대상 파일로 복사하려고 합니다.

C#을 사용하여 Excel 파일의 특정 워크시트 결합

그림 2: Excel 파일의 특정 워크시트 결합

다음 샘플 코드는 C#을 사용하여 소스 파일의 특정 워크시트를 대상 파일로 결합하는 방법을 보여줍니다.

// 엑셀 A 파일을 엽니다.
Workbook excelA = new Workbook("Excel A.xlsx");

// 엑셀 B 파일을 엽니다.
Workbook excelB = new Workbook("Excel B.xlsx");

// 대상 통합 문서를 만듭니다.
Workbook destWorkbook = new Workbook();
// 첫 번째 워크시트는 기본적으로 통합 문서에 추가됩니다. 두 번째 워크시트를 추가합니다.
destWorkbook.Worksheets.Add();

// Excel A 파일의 영업 워크시트를 대상 파일에 복사합니다.
destWorkbook.Worksheets[0].Copy(excelA.Worksheets["Sales"]);

// Excel B 파일의 Sales 워크시트를 대상 파일에 복사합니다.
destWorkbook.Worksheets[1].Copy(excelB.Worksheets["Sales"]);

// 기본적으로 워크시트 이름은 각각 "Sheet1" 및 "Sheet2"입니다.
// 의미 있는 이름을 지정해 보겠습니다.
destWorkbook.Worksheets[0].Name = excelA.FileName + " - Sales";
destWorkbook.Worksheets[1].Name = excelB.FileName + " - Sales";

// 대상 파일을 저장합니다.
destWorkbook.Save("CombinedFile.xlsx");

C#을 사용하여 여러 워크시트를 하나로 병합

여러 워크시트의 데이터를 하나의 워크시트로 복사해야 하는 경우가 있습니다. 예를 들어 Excel 파일에 여러 제품에 대한 정보가 포함된 몇 개의 워크시트가 있고 다음과 같이 이러한 시트를 하나의 요약 워크시트로 병합하려고 합니다.

C#을 사용하여 여러 워크시트를 하나로 병합

그림 3: 여러 워크시트를 하나로 병합

다음 코드 조각은 C#을 사용하여 여러 워크시트의 데이터를 하나의 워크시트로 복사하는 방법을 보여줍니다.

// 워크시트가 포함된 Excel 파일을 엽니다.
// 제품1, 제품2 및 제품3
Workbook workbook = new Workbook("Products.xlsx");

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

// 데이터를 복사하려는 소스 워크시트를 반복합니다.
// 요약 워크시트
string[] nameOfSourceWorksheets = { "Products1", "Products2", "Products3" };
int totalRowCount = 0;

foreach (string sheetName in nameOfSourceWorksheets)
{
    Worksheet sourceSheet = workbook.Worksheets[sheetName];

    Range sourceRange;
    Range destRange;
    // Products1 워크시트의 경우 모든 행과 열을 포함합니다.
    if (sheetName.Equals("Products1"))
    {
        sourceRange = sourceSheet.Cells.MaxDisplayRange;
        
        destRange = summarySheet.Cells.CreateRange(
                sourceRange.FirstRow + totalRowCount,
                sourceRange.FirstColumn,
                sourceRange.RowCount,
                sourceRange.ColumnCount);
    }
    // Products2 및 Products3 워크시트의 경우
    // 첫 번째 행(제목 포함)을 제외합니다.
    else
    {
        int mdatarow = sourceSheet.Cells.MaxDataRow; // Zero-based
        int mdatacol = sourceSheet.Cells.MaxDataColumn; // Zero-based
        sourceRange = sourceSheet.Cells.CreateRange(0 + 1, 0, mdatarow, mdatacol + 1);

        destRange = summarySheet.Cells.CreateRange(
                sourceRange.FirstRow + totalRowCount -1,
                sourceRange.FirstColumn,
                sourceRange.RowCount,
                sourceRange.ColumnCount);
    }

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

// 통합 문서 저장 
workbook.Save("Summarized.xlsx");

결론

이 기사에서는 프로그래밍 방식으로 여러 Excel 파일을 하나로 결합하는 방법을 배웠습니다. 원본 파일의 모든 워크시트 또는 특정 워크시트를 대상 파일에 복사할 수 있습니다. 여러 워크시트의 데이터를 하나의 워크시트로 결합하는 방법도 배웠습니다. 자세한 내용은 .NET용 Aspose.Cells 문서를 확인하십시오. 궁금한 사항이 있으시면 지원 포럼에 문의해 주세요. 몇 시간 안에 답변을 드리겠습니다.

또한보십시오