소개
Aspose.Cells FOSS for .NET은 Microsoft Office에 의존하지 않고 Excel .xlsx 워크북을 읽고, 쓰고, 조작할 수 있는 순수 관리 코드 기반, MIT 라이선스 라이브러리입니다. Aspose.Cells_FOSS NuGet 패키지로 설치되며, 모든 .NET 프로젝트—콘솔 앱, 웹 API, 백그라운드 워커, 서버리스 함수—에 통합됩니다.
이 게시물은 공개 API의 기능별 walkthrough를 제공하며, 가능한 내용과 C# 코드에서 각 기능을 호출하는 방법을 보여줍니다.
기능 개요
워크북 및 워크시트 수명 주기
모든 작업의 진입점은 Workbook 클래스입니다. new Workbook()을 사용해 처음부터 생성하거나, new Workbook(filePath) 또는 new Workbook(stream)로 기존 .xlsx를 로드합니다. Workbook.Worksheets를 통해 시트를 탐색하고, Worksheet.Name와 Worksheet.VisibilityType을 설정한 뒤, Workbook.Save()으로 저장합니다. 손상된 파일의 경우, TryRepairPackage = true와 TryRepairXml = true을 포함한 LoadOptions 인스턴스를 전달합니다.
using Aspose.Cells_FOSS;
var options = new LoadOptions
{
TryRepairPackage = true,
TryRepairXml = true,
};
try
{
_ = new Workbook("sample.xlsx", options);
}
catch (WorkbookLoadException exception)
{
Console.WriteLine(exception.Message);
}
셀 데이터 및 수식
셀에 값을 쓰려면 Cell.PutValue()을(를) 사용합니다 — 오버로드는 string, int, double, decimal, bool, DateTime을(를) 허용합니다. 값을 다시 읽어오려면 Cell.Value, Cell.StringValue, Cell.Formula을(를) 사용합니다. Cell.Formula 속성을 사용해 Excel 수식을 설정합니다; 수식 문자열은 저장 시 보존되며 다시 로드해도 유지됩니다.
using Aspose.Cells_FOSS;
var workbook = new Workbook();
var sheet = workbook.Worksheets[0];
sheet.Cells["A1"].PutValue("Hello");
sheet.Cells["B1"].PutValue(123);
sheet.Cells["C1"].Formula = "=B1*2";
workbook.Save("hello.xlsx");
var loaded = new Workbook("hello.xlsx");
Console.WriteLine(loaded.Worksheets[0].Cells["C1"].Formula);
Console.WriteLine(loaded.Worksheets[0].Cells["C1"].StringValue);
셀 스타일링
폰트, 채우기, 테두리, 숫자 형식 및 정렬을 제어하려면 Style 객체를 적용합니다. 현재 스타일을 Cell.GetStyle()으로 가져와 수정한 뒤 Cell.SetStyle()로 커밋합니다. 배경 채우기의 경우 Style.Pattern = FillPattern.Solid을 설정하고 Color를 Style.ForegroundColor에 할당합니다. 셀 범위를 확장하려면 Cells.Merge()을 사용합니다.
using Aspose.Cells_FOSS;
var workbook = new Workbook();
var cell = workbook.Worksheets[0].Cells["A1"];
cell.PutValue("Styled");
var style = cell.GetStyle();
style.Font.Bold = true;
style.Pattern = FillPattern.Solid;
style.ForegroundColor = Color.FromArgb(255, 241, 196, 15);
cell.SetStyle(style);
Console.WriteLine($"{cell.StringValue} / Bold={cell.GetStyle().Font.Bold}");
조건부 서식
셀 범위에 조건부 서식 규칙을 ConditionalFormattingCollection으로 연결합니다. 규칙은 FormatConditionType.CellValue, Expression, ColorScale, DataBar, IconSet를 지원합니다. 비교 연산자(Between, Equal, GreaterThan 등)를 지정하려면 OperatorType을 사용하고, 일치하는 셀에 Style을 할당하며, 규칙별로 우선순위와 true인 경우 중단 동작을 설정합니다.
using Aspose.Cells_FOSS;
var workbook = new Workbook();
var sheet = workbook.Worksheets[0];
var cfCollection = sheet.ConditionalFormattings[sheet.ConditionalFormattings.Add()];
cfCollection.AddArea(CellArea.CreateCellArea("A1", "A10"));
var rule = cfCollection[cfCollection.AddCondition(
FormatConditionType.CellValue, OperatorType.Between, "3", "7")];
var style = rule.Style;
style.Pattern = FillPattern.Solid;
style.ForegroundColor = Color.FromArgb(255, 255, 199, 206);
style.Font.Bold = true;
rule.Style = style;
workbook.Save("conditional-formatting.xlsx");
데이터 유효성 검사
셀에 입력 제약을 추가하려면 Worksheet.Validations을 사용합니다. 지원되는 유효성 검사 유형에는 ValidationType.List, Decimal, Custom 등이 포함됩니다. 입력 프롬프트(InputTitle, InputMessage)와 오류 메시지(ErrorTitle, ErrorMessage, ValidationAlertType)를 구성합니다. 검증 범위를 정의하려면 CellArea.CreateCellArea()을 사용하고, 추가 범위에 규칙을 적용하려면 Validation.AddArea()을 사용합니다.
using Aspose.Cells_FOSS;
var workbook = new Workbook();
var sheet = workbook.Worksheets[0];
sheet.Name = "Validation Sheet";
var listIdx = sheet.Validations.Add(CellArea.CreateCellArea("A1", "A3"));
var listVal = sheet.Validations[listIdx];
listVal.Type = ValidationType.List;
listVal.Formula1 = "\"Open,Closed\"";
listVal.IgnoreBlank = true;
listVal.InCellDropDown = true;
listVal.ShowInput = true;
listVal.InputTitle = "Status";
listVal.InputMessage = "Pick a status";
listVal.ShowError = true;
listVal.ErrorTitle = "Invalid";
listVal.ErrorMessage = "Choose from the list";
workbook.Save("validations-sample.xlsx");
페이지 설정 및 인쇄 옵션
인쇄 레이아웃을 Worksheet.PageSetup을 통해 구성합니다. 여백(LeftMarginInch, RightMarginInch, TopMarginInch, BottomMarginInch), Orientation, PaperSize, 배율, 인쇄 영역, 제목 행 및 열, 머리글 및 바닥글, 페이지 나누기를 설정합니다. 모든 설정은 저장·불러오기 과정을 거쳐도 유지됩니다.
using Aspose.Cells_FOSS;
var workbook = new Workbook();
var sheet = workbook.Worksheets[0];
sheet.Name = "Print Sheet";
sheet.Cells["A1"].PutValue("Title");
var pageSetup = sheet.PageSetup;
pageSetup.Orientation = PageOrientationType.Landscape;
pageSetup.PaperSize = PaperSizeType.PaperA4;
pageSetup.PrintArea = "$A$1:$C$10";
pageSetup.PrintTitleRows = "$1:$2";
pageSetup.LeftHeader = "Left Header";
pageSetup.CenterFooter = "Center Footer";
pageSetup.PrintGridlines = true;
pageSetup.CenterHorizontally = true;
workbook.Save("page-setup-sample.xlsx");
워크시트 설정 및 보호
각 시트 표시를 Worksheet.ShowGridlines, ShowRowColumnHeaders, ShowZeros, RightToLeft, Zoom, TabColor 로 제어합니다. Worksheet.Protect()으로 시트를 보호하고 세밀한 Protection 플래그(Objects, FormatCells, InsertRows, AutoFilter, SelectLockedCells)를 구성합니다. 행 높이, 열 너비, 숨김 행/열 및 병합 영역을 Cells.Rows, Cells.Columns, Cells.Merge()를 통해 관리합니다.
using Aspose.Cells_FOSS;
var workbook = new Workbook();
var layout = workbook.Worksheets[0];
layout.Name = "Layout";
layout.VisibilityType = VisibilityType.Hidden;
layout.TabColor = Color.FromArgb(255, 34, 68, 102);
layout.ShowGridlines = false;
layout.Zoom = 85;
layout.Protect();
layout.Protection.FormatCells = true;
layout.Protection.InsertRows = true;
layout.Cells["A1"].PutValue("Merged");
layout.Cells.Rows[1].Height = 22.5d;
layout.Cells.Columns[0].Width = 18.25d;
layout.Cells.Merge(0, 0, 2, 2);
workbook.Save("worksheet-settings-sample.xlsx");
하이퍼링크 및 이름이 지정된 범위
외부, 내부 및 mailto: 하이퍼링크를 HyperlinkCollection.Add()을 통해 추가합니다. 사용자에게 표시되는 레이블을 위해 Hyperlink.TextToDisplay와 Hyperlink.ScreenTip을 설정합니다. DefinedNameCollection.Add()를 사용하여 워크북 또는 시트 범위에서 이름이 지정된 범위를 정의합니다 — 이름이 지정된 범위는 파일을 다시 로드해도 유지되는 안정적인 수식 앵커 및 차트 데이터 소스로 활용됩니다.
using Aspose.Cells_FOSS;
var workbook = new Workbook();
var sheet = workbook.Worksheets[0];
sheet.Cells["A1"].PutValue("Docs");
var link = sheet.Hyperlinks[sheet.Hyperlinks.Add("A1", 1, 1, "https://example.com/docs")];
link.TextToDisplay = "Docs";
link.ScreenTip = "External documentation";
var name = workbook.DefinedNames[workbook.DefinedNames.Add("PrimaryRange", "='Sheet1'!$A$1:$D$5")];
name.Comment = "Primary data range";
workbook.Save("hyperlinks-names.xlsx");
Console.WriteLine("Hyperlinks: " + sheet.Hyperlinks.Count);
Console.WriteLine("Defined names: " + workbook.DefinedNames.Count);
빠른 시작
dotnet add package Aspose.Cells.FOSSusing Aspose.Cells_FOSS;
var workbook = new Workbook();
var sheet = workbook.Worksheets[0];
sheet.Cells["A1"].PutValue("Hello");
sheet.Cells["B1"].PutValue(123);
sheet.Cells["C1"].Formula = "=B1*2";
workbook.Save("output.xlsx");
지원되는 형식
| 형식 | 확장자 | 읽기 | 쓰기 |
|---|---|---|---|
| Xlsx | .xlsx | ✓ | ✓ |
| Auto | (다양함) | ✓ | — |
오픈 소스 및 라이선스
Aspose.Cells FOSS for .NET는 MIT 라이선스로 공개되며 NuGet을 통해 Aspose.Cells_FOSS로 배포됩니다. 오픈 소스와 상용 프로젝트 모두에 적합합니다.