푸터 콘텐츠로 바로가기
Iron Academy Logo
C# 배우기
C# 배우기

다른 카테고리

C#으로 Excel 파일 생성하기

Tim Corey
55분 42초

C# 개발자가 보고 도구, 데이터 내보내기 또는 사용자 입력 인터페이스를 구축할 때 Excel 파일을 생성하고 작업하는 것은 매우 중요한 기술입니다. 이 글에서는 Tim Corey가 자신의 비디오 " C#으로 Excel 파일 만들기 "에서 보여준 자세한 단계별 과정을 심층적으로 살펴보겠습니다. 이 비디오에서는 EPPlus 라이브러리를 사용하여 C#으로 Excel 파일을 생성하고, 서식을 지정하고, 심지어 데이터까지 읽어오는 방법을 보여줍니다.

리스트에서 새로운 Excel 워크북을 생성하거나 Excel 워크시트 셀을 포맷하고, 구조화된 데이터를 애플리케이션으로 다시 읽어들이고자 할 때, Tim의 예제는 C#에서의 Excel 파일 생성의 필수 사항을 다루는 실용적인 튜토리얼로 제공됩니다.

팀의 영상을 참고하여 단계별로 살펴보겠습니다.

소개: C#에서 Excel을 사용하는 이유는 무엇일까요?

팀은 마이크로소프트 엑셀이 비즈니스에서 가장 중요한 도구 중 하나라고 설명하며 이야기를 시작합니다. 엑셀 파일은 사용하기 쉽고, 활용도가 매우 높으며, 데이터를 표현하는 데 완벽합니다. 그는 C#으로 Excel 파일을 생성하는 것이 복잡한 보고 솔루션을 대체할 수 있는 방법, 즉 Excel을 기본 보고 도구로 활용할 수 있는 방법을 강조합니다.

목표는 C#을 사용하여 Excel 애플리케이션을 만들고, 데이터를 입력하고, 서식을 적용한 다음, 해당 Excel 파일에서 데이터를 읽어오는 것입니다.

솔루션 탐색기에서 프로젝트 설정하기

Tim은 Visual Studio 2019를 열고 콘솔 애플리케이션(.NET Core)을 선택한 다음 솔루션 이름을 ExcelDemoApp으로 지정합니다. 콘솔 애플리케이션을 사용하면 Excel 관련 코드에만 집중할 수 있는 깔끔하고 방해 요소가 없는 환경을 제공합니다.

그는 객체 인스턴스화 간소화와 같은 C# 9의 기능을 활용하기 위해 대상 프레임워크를 .NET 5.0으로 업그레이드합니다.

NuGet 패키지에서 EPPlus 추가하기

엑셀 통합 문서를 만들기 위해 Tim은 NuGet 패키지 관리자를 통해 EPPlus 패키지를 설치합니다. EPPlus는 .xlsx 파일(Open XML)과 함께 작동하는 Excel 라이브러리로, MS Office 또는 Excel Interop 없이도 차트, 표, 스타일 및 수식과 같은 Excel의 모든 기능을 지원합니다.

참고: EPPlus는 비상업적 용도로는 무료이지만, 상업적 용도로 사용하려면 라이선스가 필요합니다.

그는 런타임 오류를 방지하기 위해 필요한 비상업적 라이선스 수락 줄을 코드에 복사하고 OfficeOpenXml을 사용하는 데 필요한 부분을 추가합니다. 지령.

엑셀 파일 경로 정의하기

Tim은 System.IO.FileInfo를 사용하여 하드코딩된 파일 경로를 설정합니다.

var file = new FileInfo(@"C:\demos\youtubedemo.xlsx");
var file = new FileInfo(@"C:\demos\youtubedemo.xlsx");

이 파일은 처음에는 존재하지 않습니다 . 프로그램에 의해 동적으로 생성됩니다.

데이터 모델 생성

엑셀 워크시트를 채우기 위해 Tim은 다음과 같은 속성을 가진 간단한 PersonModel 클래스를 정의합니다.

  • 정수 ID

  • 문자열 FirstName

  • 문자열 성

그는 GetSetupData() 헬퍼 메서드를 사용하여 리스트를 반환합니다.팀 코리, 수 스톰, 제인 스미스와 같은 샘플 데이터로 채워져 있습니다.

데이터를 엑셀 파일에 비동기적으로 저장

현대 개발 환경에서 UI 스레드를 차단하는 것은 용납할 수 없습니다. 그래서 Tim은 비동기 메서드를 정의합니다.

static async Task SaveExcelFile(List<PersonModel> people, FileInfo file)
static async Task SaveExcelFile(List<PersonModel> people, FileInfo file)

엑셀에 쓰기 전에 그는 파일이 존재하는지 확인하고, 이름 충돌을 방지하기 위해 파일이 있으면 삭제합니다.

if (file.Exists) file.Delete();
if (file.Exists) file.Delete();

엑셀 워크시트 생성 및 서식 지정

Tim은 EPPlus ExcelPackage 객체를 using 블록 내에서 사용하여 적절한 폐기를 보장합니다.

using var package = new ExcelPackage(file);
using var package = new ExcelPackage(file);

그는 통합 문서에 새 워크시트를 추가합니다.

var ws = package.Workbook.Worksheets.Add("MainReport");
var ws = package.Workbook.Worksheets.Add("MainReport");

데이터 로딩 중

LoadFromCollection 함수를 사용하여 "A2" 셀부터 시작하는 사람 목록을 삽입합니다.

ws.Cells["A2"].LoadFromCollection(people, true);
ws.Cells["A2"].LoadFromCollection(people, true);
  • true로 설정하면 "Id", "FirstName", "LastName"과 같은 헤더가 포함됩니다.

그런 다음 AutoFitColumns() 함수가 열 너비를 자동으로 조정합니다.

ws.Cells[ws.Dimension.Address].AutoFitColumns();
ws.Cells[ws.Dimension.Address].AutoFitColumns();

마지막으로 그는 엑셀 파일을 저장합니다.

await package.SaveAsync();
await package.SaveAsync();

엑셀 셀 및 행 스타일 지정

엑셀 파일의 가독성을 높이기 위해 Tim은 스타일을 적용하는 방법을 보여줍니다.

제목 행

ws.Cells["A1"].Value = "Our Cool Report";
ws.Cells["A1:C1"].Merge = true; ws.Row(1).Style.Font.Size = 24;
ws.Row(1).Style.Font.Color.SetColor(Color.Blue);
ws.Column(1).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
ws.Cells["A1"].Value = "Our Cool Report";
ws.Cells["A1:C1"].Merge = true; ws.Row(1).Style.Font.Size = 24;
ws.Row(1).Style.Font.Color.SetColor(Color.Blue);
ws.Column(1).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;

헤더 행

ws.Row(2).Style.Font.Bold = true;
ws.Row(2).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
ws.Row(2).Style.Font.Bold = true;
ws.Row(2).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;

사용자 지정 열 너비

ws.Column(3).Width = 20;
ws.Column(3).Width = 20;

이 섹션에서는 다음과 같은 고급 서식 지정 방법을 보여줍니다.

  • 병합된 셀

  • 글꼴 스타일링

  • 배경색

  • 행/열 정렬

  • 너비 조절

이러한 기능은 MS Office Excel의 일반적인 서식 기능을 모방합니다.

C#에서 Excel 파일의 데이터를 읽는 방법

이제 데이터를 Excel에 기록했으니, C#으로 다시 읽어들일 차례입니다.

팀이 그 방법을 소개합니다:

static async Task<List<PersonModel>> LoadExcelFile(FileInfo file)
static async Task<List<PersonModel>> LoadExcelFile(FileInfo file)

그는 행과 열 카운터를 설정합니다.

int row = 3; // Skip title and header rows int col = 1;
int row = 3; // Skip title and header rows int col = 1;

행을 순환하며

그는 while 루프를 사용하여 비어 있지 않은 셀을 확인하고 값을 읽습니다.

while (!string.IsNullOrWhiteSpace(ws.Cells[row, col].Value?.ToString()))
while (!string.IsNullOrWhiteSpace(ws.Cells[row, col].Value?.ToString()))

반복문 내부에서 값이 읽히고 파싱됩니다.

p.Id = int.Parse(ws.Cells[row, col].Value.ToString());
p.FirstName = ws.Cells[row, col + 1].Value.ToString();
p.LastName = ws.Cells[row, col + 2].Value.ToString();
p.Id = int.Parse(ws.Cells[row, col].Value.ToString());
p.FirstName = ws.Cells[row, col + 1].Value.ToString();
p.LastName = ws.Cells[row, col + 2].Value.ToString();

목록값이 채워지고 반환됩니다.

가져온 데이터 검증

Tim은 반환된 목록을 순회하며 각 항목을 콘솔에 출력합니다.

foreach (var p in peopleFromExcel)
{
     Console.WriteLine($"{p.Id} {p.FirstName} {p.LastName}");
}
foreach (var p in peopleFromExcel)
{
     Console.WriteLine($"{p.Id} {p.FirstName} {p.LastName}");
}

엑셀을 사용자 입력 도구로서 얼마나 유연하게 활용할 수 있는지 보여주기 위해, 팀은 엑셀 파일에 "빌 스미스", "메리 화이트"와 같은 새 레코드를 직접 수동으로 추가합니다. 앱을 다시 실행하면 이러한 항목들이 코드 변경 없이 자동으로 가져와지는데, 이는 엑셀이 데이터 입력 인터페이스로서 잠재력이 크다는 것을 입증합니다.

실제 사용 사례

Tim은 C# Excel 솔루션의 사용 사례를 강조합니다.

  • 데이터베이스 테이블을 엑셀로 내보내기

  • 최종 사용자가 입력한 데이터 가져오기

  • 엑셀을 보고 대시보드로 활용하기

  • 데이터 처리를 위한 구조화된 통합 문서 생성

이 모든 것은 Excel이 설치되어 있어야 하는 Microsoft.Office.Interop.Excel에 의존하지 않고 가능합니다.

EPPlus 및 Excel 파일에 대한 최종 참고 사항

팀은 프로그램으로 생성된 .xlsx 파일은 엑셀에서 열고 저장하기 전까지는 모든 메타데이터를 포함하지 않는다고 설명합니다. 이것이 바로 실제 엑셀 프로그램에서 파일을 열면 파일 크기가 커지는 이유입니다.

그는 또한 EPPlus가 다음과 같은 기능을 지원하는 세련되고 견고한 라이브러리라고 언급합니다.

  • 차트

  • 이미지

  • 스파크라인

  • 공식

  • 페이지 설정

  • 국경

셀 서식

결론

C#으로 Excel 파일을 만드는 것은 어렵거나 비용이 많이 드는 일이 아닙니다. EPPlus Excel 라이브러리 덕분에 개발자는 MS Office 없이도 프로그래밍 방식으로 다양한 기능을 갖춘 Excel 문서를 만들 수 있습니다. Tim Corey가 보여주는 것처럼 단 몇 줄의 코드로 다음과 같은 작업을 수행할 수 있습니다.

  • 엑셀 파일 생성

  • 행과 열에 데이터를 입력합니다.

  • 스타일링 적용

  • 데이터를 다시 읽어오기

  • 엑셀을 사용자 인터페이스로 활용

이러한 특징 덕분에 이 소프트웨어는 간단한 보고 도구, 데이터 가져오기/내보내기 또는 사용자가 이미 알고 있는 인터페이스를 제공하는 데 매우 적합합니다.

다음번에 프로젝트를 개발하면서 Excel 데이터를 출력하거나 사용해야 할 때는 Tim Corey의 비디오 에 나온 샘플 코드를 활용해 보세요. Excel의 강력한 기능을 .NET Framework 또는 .NET Core 애플리케이션에 적용할 수 있을 것입니다.

Hero Worlddot related to C#으로 Excel 파일 생성하기
Hero Affiliate related to C#으로 Excel 파일 생성하기

사랑하는 것을 공유하여 더 많은 수익을 얻으세요

당신은 .NET, C#, Java, Python, 또는 Node.js를 다루는 개발자를 위한 콘텐츠를 만드나요? 당신의 전문성을 추가 수입으로 전환하세요!

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해