```html

C#에서 Excel 파일 저장하기는 많은 .NET 애플리케이션에서 일반적인 작업이며, 특히 보고서 생성, 분석 데이터 내보내기 또는 시스템 로그 자동화 시에 그렇습니다. 재무 요약이나 일일 운영 데이터를 다루든, 프로그래밍 방식으로 Excel 파일을 생성하고 저장할 수 있으면 효율성과 정확성을 크게 향상시킬 수 있습니다.
C#에서 개발자는 새 통합 문서 만들기, 데이터 쓰기, XLSX, CSV 또는 PDF와 같은 다양한 형식으로 저장하는 등 여러 가지 방법으로 Excel 파일을 처리할 수 있습니다. 전용 Excel 라이브러리를 사용하면 Microsoft Excel이나 수동 개입 없이 이러한 작업을 효율적으로 자동화할 수 있습니다.
이 기사에서는 다음 방법을 살펴보겠습니다.
- 개발 환경 준비
- DataTable 또는 DataGridView 데이터를 Excel에 저장
- Excel 파일을 다른 스프레드시트 형식으로 저장 (CSV, XLS 등)
- Excel 파일을 문서 형식으로 내보내기 (PDF, HTML 등)
- 웹 앱용 Excel 통합 문서를 MemoryStream에 저장
- 기존 Excel 파일 열기 및 다시 저장
개발 환경 준비
코드를 살펴보기 전에 .NET에서 파일 생성, 읽기 및 저장을 지원하는 Excel 라이브러리로 개발 환경을 설정하세요. 이 튜토리얼에서는 .NET용 무료 Spire.XLS를 사용합니다.
1단계: NuGet을 통해 Spire.XLS 설치
Install-Package FreeSpire.XLS
2단계: 필요한 네임스페이스 가져오기
using Spire.Xls;
3단계: 간단한 Excel 파일 생성, 작성 및 저장
// 새 통합 문서를 만들고 첫 번째 워크시트를 가져옵니다.
Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
// A1 셀에 "Hello World!"를 씁니다.
sheet.Range["A1"].Text = "Hello World!";
// 통합 문서를 파일에 저장합니다.
workbook.SaveToFile("HelloWorld.xlsx", ExcelVersion.Version2016);
이 간단한 예는 통합 문서 만들기, 셀에 데이터 쓰기, 파일 저장과 같은 기본 워크플로를 보여줍니다.
그런 다음 다음과 같은 주요 클래스 및 메서드를 탐색할 수 있습니다.
- Workbook – 전체 Excel 파일을 나타냅니다.
- Worksheet – 통합 문서 내의 단일 시트를 나타냅니다.
- Range – 입력, 서식 지정 또는 스타일링을 위해 특정 셀에 액세스할 수 있습니다.
- Workbook.SaveToFile() – 지정된 Excel 형식으로 통합 문서를 디스크에 저장합니다.
C#에서 Excel 파일에 데이터 저장
DataTable 또는 DataGridView와 같은 구조화된 데이터를 Excel 파일에 저장하는 것은 C# 개발에서 가장 실용적인 작업 중 하나입니다. 애플리케이션이 데이터베이스 결과, UI 그리드 콘텐츠 또는 자동화된 보고서를 생성하든, 이러한 데이터 세트를 Excel로 내보내면 가독성과 호환성이 향상됩니다.
예제 1: DataTable을 Excel에 저장
using Spire.Xls;
using System.Data;
Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
sheet.Name = "EmployeeData";
DataTable table = new DataTable();
table.Columns.Add("EmployeeID");
table.Columns.Add("FullName");
table.Columns.Add("Department");
table.Columns.Add("HireDate");
table.Columns.Add("Salary");
// 샘플 행 추가
table.Rows.Add("E001", "Alice Johnson", "Finance", "2020-03-12", "7500");
table.Rows.Add("E002", "Bob Williams", "Human Resources", "2019-08-05", "6800");
table.Rows.Add("E003", "Catherine Lee", "IT", "2021-01-20", "8200");
table.Rows.Add("E004", "David Smith", "Marketing", "2018-11-30", "7100");
table.Rows.Add("E005", "Emily Davis", "Sales", "2022-06-15", "6900");
// DataTable을 워크시트에 삽입
sheet.InsertDataTable(table, true, 1, 1);
// 기본 제공 형식 적용
sheet.AllocatedRange.Rows[0].BuiltInStyle = BuiltInStyles.Heading1;
for (int i = 1; i < sheet.AllocatedRange.Rows.Count(); i++)
{
sheet.AllocatedRange.Rows[i].BuiltInStyle = BuiltInStyles.Accent1;
}
sheet.AllocatedRange.AutoFitColumns();
sheet.AllocatedRange.AutoFitRows();
// Excel에 저장
workbook.SaveToFile("EmployeeDataExport.xlsx", FileFormat.Version2016);
작동 방식:
- InsertDataTable()은 특정 셀부터 데이터를 삽입합니다.
- true 인수는 열 머리글을 포함합니다.
- SaveToFile()은 통합 문서를 디스크에 저장합니다. 두 번째 매개변수는 Excel 형식 버전을 지정합니다.
- FileFormat.Version2016은 Excel 형식 버전을 지정합니다.
아래는 내보낸 DataTable이 Excel에서 어떻게 보이는지 보여주는 샘플 출력입니다.

예제 2: DataGridView를 Excel에 저장
Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
sheet.InsertDataTable(((DataTable)dataGridView1.DataSource), true, 1, 1);
workbook.SaveToFile("GridViewExport.xlsx", FileFormat.Version2016);
팁: 저장하기 전에 DataGridView의 데이터 소스가 DataTable로 올바르게 캐스팅되었는지 확인하세요. 이렇게 하면 내보낸 구조가 UI 그리드 레이아웃과 일치하게 됩니다.
더 많은 데이터 유형, 서식 및 기타 요소를 사용하여 Excel 파일을 만드는 방법을 배우고 싶다면 C#에서 Excel 파일을 만드는 방법 문서를 참조하세요.
C#에서 Excel 파일을 CSV 또는 XLS로 저장
시스템과 플랫폼마다 다른 스프레드시트 형식이 필요합니다. XLSX가 이제 표준이지만 CSV, XLS 및 기타 형식은 엔터프라이즈 환경에서 여전히 일반적입니다. 다른 형식으로 내보내면 다양한 애플리케이션에서 Excel 데이터를 공유, 처리 또는 가져올 수 있습니다.
예제 1: Excel을 CSV로 저장
CSV(쉼표로 구분된 값)는 데이터베이스, 웹 애플리케이션 또는 일반 텍스트 파일을 지원하는 기타 시스템과 데이터를 교환하는 데 이상적인 간단한 텍스트 기반 형식입니다.
Workbook workbook = new Workbook();
workbook.LoadFromFile("EmployeeDataExport.xlsx");
workbook.SaveToFile("Report.csv", ",", FileFormat.CSV);
예제 2: Excel을 XLS(레거시 형식)로 저장
XLS(Excel 97–2003 형식)는 XLSX를 지원하지 않는 이전 시스템이나 애플리케이션에서 여전히 사용되는 레거시 이진 형식입니다. XLS로 저장하면 레거시 엔터프라이즈 워크플로와의 호환성이 보장됩니다.
Workbook workbook = new Workbook();
workbook.LoadFromFile("EmployeeDataExport.xlsx");
workbook.SaveToFile("Report_legacy.xls", ExcelVersion.Version97to2003);
추가 지원되는 스프레드시트 형식
일반적으로 사용되는 CSV, XLS 및 XLSX 형식 외에도 라이브러리는 여러 다른 스프레드시트 및 템플릿 형식도 지원합니다. 아래 표에는 프로그래밍 방식으로 파일을 저장할 때 쉽게 참조할 수 있도록 해당 FileFormat 열거형 값과 함께 이러한 형식이 나열되어 있습니다.
| 형식 | 설명 | 해당 열거형(FileFormat) |
|---|---|---|
| ODS | OpenDocument 스프레드시트 | FileFormat.ODS |
| XLSM | 매크로 사용 Excel 통합 문서 | FileFormat.Xlsm |
| XLSB | 이진 Excel 통합 문서 | FileFormat.Xlsb2007 / FileFormat.Xlsb2010 |
| XLT | Excel 97–2003 서식 파일 | FileFormat.XLT |
| XLTX | Excel Open XML 서식 파일 | FileFormat.XLTX |
| XLTM | 매크로 사용 Excel 서식 파일 | FileFormat.XLTM |
이러한 추가 형식은 레거시 시스템, 개방형 문서 표준 또는 매크로/템플릿 기반 자동화 워크플로를 사용하는 조직에 유용합니다.
C#에서 Excel을 PDF 또는 HTML로 저장
많은 경우 Excel 파일은 게시, 인쇄 또는 공유를 용이하게 하기 위해 문서 또는 웹 형식으로 변환해야 합니다.
PDF로 내보내는 것은 고정 레이아웃 보고서 및 인쇄에 이상적이며, HTML은 웹 브라우저에서 Excel 데이터를 보는 데 적합합니다.
예제 1: Excel을 PDF로 저장
다음 예제는 C#을 사용하여 Excel 통합 문서를 PDF 파일로 저장하는 방법을 보여줍니다. 이는 레이아웃과 서식을 유지하는 보고서를 생성하는 데 유용합니다.
Workbook workbook = new Workbook();
workbook.LoadFromFile("EmployeeDataExport.xlsx");
workbook.SaveToFile("EmployeeDataExport.pdf", FileFormat.PDF);
다음은 Excel에서 내보낸 후 생성된 PDF 파일의 예입니다.

예제 2: Excel을 HTML로 저장
이 예제는 Excel 통합 문서를 HTML 파일로 저장하여 웹 브라우저에서 데이터를 렌더링하거나 웹 애플리케이션과 통합하기 쉽게 만드는 방법을 보여줍니다.
Workbook workbook = new Workbook();
workbook.LoadFromFile("EmployeeDataExport.xlsx");
workbook.SaveToFile("EmployeeDataExport.html", FileFormat.HTML);
아래는 브라우저에서 렌더링된 내보낸 HTML 파일의 미리보기입니다.

추가 지원되는 문서 및 웹 형식
PDF 및 HTML 외에도 라이브러리는 여러 다른 문서 및 웹 친화적인 형식을 지원합니다. 아래 표에는 쉽게 참조할 수 있도록 FileFormat 열거형 값과 함께 이러한 형식이 나와 있습니다.
| 형식 | 설명 | 해당 열거형(FileFormat) |
|---|---|---|
| XML | XML로 내보낸 Excel 데이터 | FileFormat.XML |
| Bitmap / Image | Excel을 비트맵 또는 다른 이미지 형식으로 내보내기 | FileFormat.Bitmap |
| XPS | XML Paper Specification 문서 | FileFormat.XPS |
| PostScript | PostScript 문서 | FileFormat.PostScript |
| OFD | 개방형 고정 레이아웃 문서 형식 | FileFormat.OFD |
| PCL | 프린터 명령 언어 파일 | FileFormat.PCL |
| Markdown | Markdown 파일 형식 | FileFormat.Markdown |
이러한 형식은 인쇄, 웹 게시 또는 자동화를 위해 다양한 플랫폼과 워크플로에서 Excel 콘텐츠를 배포하는 데 추가적인 유연성을 제공합니다.
C#에서 Excel 파일을 MemoryStream에 저장
웹 애플리케이션이나 클라우드 서비스에서는 보안 또는 성능상의 이유로 Excel 파일을 디스크에 직접 저장하는 것이 이상적이지 않을 수 있습니다. MemoryStream을 사용하면 메모리에서 Excel 파일을 생성하여 클라이언트에 직접 전달하여 다운로드할 수 있습니다. .NET용 Spire.XLS는 또한 MemoryStream을 통한 통합 문서 로드 및 저장을 모두 지원하므로 메모리에서 Excel 파일을 완전히 처리하기가 쉽습니다.
Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
sheet.Range["A1"].Text = "Export to Stream";
using (MemoryStream stream = new MemoryStream())
{
workbook.SaveToStream(stream, ExcelVersion.Version2016);
byte[] bytes = stream.ToArray();
// 예: ASP.NET에서 다운로드를 위해 클라이언트에 바이트 보내기
// Response.BinaryWrite(bytes);
}
이 접근 방식은 서버에 임시 파일을 만들지 않고 동적으로 Excel 파일을 제공하려는 ASP.NET, Web API 또는 클라우드 서비스에 특히 유용합니다.
C#에서 Excel 파일 열기 및 다시 저장
많은 애플리케이션에서 기존 Excel 통합 문서를 로드하고, 업데이트나 수정을 적용한 다음, 다시 디스크에 저장하거나 다른 형식으로 변환해야 할 수 있습니다. 이는 보고서를 업데이트하거나, 내보낸 데이터를 수정하거나, Excel 파일 워크플로를 자동화할 때 일반적입니다.
예제: Excel 파일 열기 및 업데이트
다음 C# 코드는 이전 통합 문서를 로드하고, 첫 번째 셀을 업데이트하고, 변경 사항을 저장합니다.
Workbook workbook = new Workbook();
workbook.LoadFromFile("EmployeeDataExport.xlsx");
Worksheet sheet = workbook.Worksheets[0];
sheet.Range["A1"].Text = "Updated Content"; // 셀 값 업데이트
sheet.Range["A1"].AutoFitColumns(); // 열 너비 자동 맞춤
// 업데이트된 통합 문서 저장
workbook.Save(); // 원본 파일에 저장
workbook.SaveToFile("UpdatedCopy.xlsx", ExcelVersion.Version2016); // 새 파일로 저장
아래 스크린샷은 파일을 수정하고 저장한 후 업데이트된 Excel 시트를 보여줍니다.

더 고급 시나리오에 대해서는 C#을 사용하여 Excel 파일 편집에 대한 자세한 가이드를 확인할 수도 있습니다.
Excel 파일 저장 시 모범 사례
-
파일 덮어쓰기 방지
실수로 인한 데이터 손실을 방지하기 위해 저장하기 전에 대상 파일이 있는지 확인하세요.
-
권한 및 경로를 올바르게 처리
특히 웹 또는 클라우드 환경에서 애플리케이션이 대상 폴더에 대한 쓰기 액세스 권한을 가지고 있는지 확인하세요.
-
올바른 형식 선택
최신 호환성을 위해서는 XLSX를, 데이터 교환을 위해서는 CSV를, 보고서 인쇄 또는 공유를 위해서는 PDF를 사용하세요.
결론
C#에서 Excel 파일 저장은 구조화된 데이터 세트 작성, 다른 스프레드시트 형식으로 내보내기, PDF/HTML로 변환, 웹 애플리케이션에서 파일 스트림 처리 등 광범위한 작업을 다룹니다.
.NET용 Spire.XLS와 같은 라이브러리가 제공하는 유연성을 통해 개발자는 강력한 Excel 자동화 워크플로를 쉽게 구현할 수 있습니다.
자주 묻는 질문
Q1: C#에서 Excel 파일을 어떻게 저장하나요?
적절한 ExcelVersion 또는 FileFormat과 함께 SaveToFile()을 사용하세요.
workbook.SaveToFile("Report.xlsx", ExcelVersion.Version2016);
Q2: 기존 Excel 파일을 어떻게 열고 수정하나요?
LoadFromFile()을 사용하여 통합 문서를 로드하고, 변경한 다음, 저장하세요.
Workbook workbook = new Workbook();
workbook.LoadFromFile("ExistingFile.xlsx");
workbook.Worksheets[0].Range["A1"].Text = "Updated Content";
workbook.SaveToFile("UpdatedFile.xlsx", ExcelVersion.Version2016);
Q3: CSV 또는 PDF로 어떻게 저장하나요?
SaveToFile()에서 원하는 FileFormat을 지정하세요.
workbook.SaveToFile("Report.csv", ",", FileFormat.CSV);
workbook.SaveToFile("Report.pdf", FileFormat.PDF);
Q4: Excel을 디스크 대신 메모리에 저장할 수 있나요?
예. SaveToStream()을 사용하여 MemoryStream으로 출력하면 웹 또는 클라우드 애플리케이션에서 유용합니다.
using (MemoryStream stream = new MemoryStream())
{
workbook.SaveToStream(stream, ExcelVersion.Version2016);
byte[] bytes = stream.ToArray();
}
참고 항목
```