C#에서 Excel 문서를 생성, 읽기 또는 업데이트하는 방법
발행: (2025년 12월 12일 오전 11:07 GMT+9)
5 min read
원문: Dev.to
Source: Dev.to
.NET용 Spire.XLS 시작하기
코드에 들어가기 전에 개발 환경을 설정하세요. .NET용 Spire.XLS는 NuGet을 통해 C# 프로젝트에 추가할 수 있습니다.
NuGet으로 설치
- Visual Studio에서 프로젝트를 엽니다.
- Solution Explorer에서 프로젝트를 마우스 오른쪽 버튼으로 클릭 → Manage NuGet Packages….
Spire.XLS를 검색하고 패키지를 설치합니다.
기본 초기화
using Spire.Xls;
using System;
using System.IO;
// ... inside your method or class
Workbook workbook = new Workbook();
// Your Excel operations will go here
workbook.Dispose(); // Always dispose of the workbook object
C#에서 Excel 문서 만들기
Spire.XLS를 사용하면 새 워크북을 만들고, 시트를 추가하고, 데이터를 채우고, 스타일을 적용하는 작업이 간단합니다.
예제: 데이터와 스타일이 포함된 기본 Excel 파일 만들기
using Spire.Xls;
using System;
using System.IO;
using System.Drawing; // For Color
class ExcelCreator
{
public static void CreateExcelFile()
{
// 1. Create a new workbook
Workbook workbook = new Workbook();
// 2. Get the first worksheet and rename it
Worksheet sheet = workbook.Worksheets[0];
sheet.Name = "Product Sales";
// 3. Write header row
sheet.Range["A1"].Text = "Product ID";
sheet.Range["B1"].Text = "Product Name";
sheet.Range["C1"].Text = "Quantity";
sheet.Range["D1"].Text = "Unit Price";
sheet.Range["E1"].Text = "Total";
// Apply basic styling to header
CellStyle headerStyle = workbook.Styles.Add("HeaderStyle");
headerStyle.Font.IsBold = true;
headerStyle.KnownColor = ExcelColors.LightYellow;
headerStyle.HorizontalAlignment = HorizontalAlignType.Center;
sheet.Range["A1:E1"].Style = headerStyle;
// 4. Populate data rows
sheet.Range["A2"].Value = "P001";
sheet.Range["B2"].Text = "Laptop";
sheet.Range["C2"].NumberValue = 10;
sheet.Range["D2"].NumberValue = 1200.50;
sheet.Range["E2"].Formula = "=C2*D2";
sheet.Range["A3"].Value = "P002";
sheet.Range["B3"].Text = "Mouse";
sheet.Range["C3"].NumberValue = 50;
sheet.Range["D3"].NumberValue = 25.00;
sheet.Range["E3"].Formula = "=C3*D3";
// 5. Auto‑fit columns for readability
for (int i = 1; i <= 5; i++)
sheet.AutoFitColumn(i);
// 6. Save the workbook
string filePath = "ProductSales.xlsx";
workbook.SaveToFile(filePath, ExcelVersion.Version2016);
Console.WriteLine($"Excel file created at: {Path.GetFullPath(filePath)}");
// 7. Clean up
workbook.Dispose();
}
}
이 예제는 다음을 보여줍니다:
- 워크북 및 워크시트 생성
- 문자열 및 숫자 데이터 쓰기
- 기본 스타일 적용(굵은 텍스트, 배경색, 정렬)
- 수식 추가
- 파일 저장
Excel 문서에서 데이터 읽기
Spire.XLS는 기존 워크북을 로드하고 셀 값, 수식, 주석 등에 접근할 수 있게 해줍니다.
예제: 기존 Excel 파일에서 데이터 읽기
using Spire.Xls;
using System;
using System.IO;
class ExcelReader
{
public static void ReadExcelFile(string filePath)
{
if (!File.Exists(filePath))
{
Console.WriteLine($"Error: File not found at {filePath}");
return;
}
// 1. Load the workbook
Workbook workbook = new Workbook();
workbook.LoadFromFile(filePath);
// 2. Get the first worksheet
Worksheet sheet = workbook.Worksheets[0];
Console.WriteLine($"--- Reading data from sheet: {sheet.Name} ---");
// 3. Read specific cells
Console.WriteLine($"Product ID (A2): {sheet.Range["A2"].Text}");
Console.WriteLine($"Product Name (B2): {sheet.Range["B2"].Text}");
Console.WriteLine($"Quantity (C2): {sheet.Range["C2"].NumberValue}");
Console.WriteLine($"Unit Price (D2): {sheet.Range["D2"].NumberValue}");
Console.WriteLine($"Total (E2) – Value: {sheet.Range["E2"].NumberValue}");
Console.WriteLine($"Total (E2) – Formula: {sheet.Range["E2"].Formula}");
// 4. Iterate through all used cells
Console.WriteLine("\n--- All Data ---");
for (int row = 1; row <= sheet.LastRow; row++)
{
for (int col = 1; col <= sheet.LastColumn; col++)
{
Console.Write($"{sheet.Range[row, col].DisplayText}\t");
}
Console.WriteLine();
}
// 5. Clean up
workbook.Dispose();
}
}
핵심 포인트:
LoadFromFile은 기존 워크북을 로드합니다.Range["A2"](또는Range[row, col])는 개별 셀에 접근합니다.DisplayText는 셀 값의 서식이 적용된 문자열을 반환합니다.
기존 Excel 문서 업데이트하기
워크북을 수정하는 절차는 동일합니다: 로드 → 변경 → 저장.
예제: 기존 Excel 파일 업데이트하기
using Spire.Xls;
using System;
using System.IO;
class ExcelUpdater
{
public static void UpdateExcelFile(string filePath)
{
if (!File.Exists(filePath))
{
Console.WriteLine($"Error: File not found at {filePath}");
return;
}
// 1. Load the workbook
Workbook workbook = new Workbook();
workbook.LoadFromFile(filePath);
// 2. Get the first worksheet
Worksheet sheet = workbook.Worksheets[0];
Console.WriteLine($"--- Updating data in sheet: {sheet.Name} ---");
// 3. Modify a specific cell (e.g., change quantity of Laptop from 10 to 15)
sheet.Range["C2"].NumberValue = 15;
Console.WriteLine($"Updated Quantity for Laptop (C2) to: {sheet.Range["C2"].NumberValue}");
// 4. Save the changes (overwrite or save as a new file)
string updatedPath = "ProductSales_Updated.xlsx";
workbook.SaveToFile(updatedPath, ExcelVersion.Version2016);
Console.WriteLine($"Updated file saved at: {Path.GetFullPath(updatedPath)}");
// 5. Clean up
workbook.Dispose();
}
}
이 스니펫은 다음을 보여줍니다:
- 기존 워크북 로드
- 셀 값(또는 수식, 스타일 등) 변경
SaveToFile로 수정 사항 저장