IRONSOFTWAREHOME

엑셀에서 문자열 데이터 유효성 검사에 대한 제한 사항

Curtis Chau
Curtis Chau
Updated: 2026년 6월 29일

Microsoft Excel에는 문자열 목록의 길이에 대한 알려진 제한 사항이 있는데, 쉼표와 같은 구분 기호를 포함하여 목록의 전체 길이는 255자를 초과할 수 없다는 것입니다.

이 문제는 아래 그림과 같이 Excel 시트의 기존 범위에서 데이터를 선택하는 대신 소스 필드에 문자열 목록을 수동으로 입력할 때 발생합니다.

엑셀 제한 문제

엑셀 제한 사항 해결 방법

이러한 제한 사항에 대한 일반적인 해결 방법은 원본 필드에 문자열 목록을 입력하는 대신 워크시트 내의 열이나 행에 값 목록을 만드는 것입니다. 아래 그림과 같습니다.

Example Solution

그 후, 데이터 유효성 검사에서 C1:C100과 같은 수식 참조를 사용하여 해당 범위를 지정합니다.

새로운 소스
새로운 데이터

이 방법을 사용하면 255자 제한에 구애받지 않고 드롭다운 목록을 만들 수 있으므로 이러한 제약을 우회할 수 있습니다.


IronXL에서 발생하는 문제

IronXL은 데이터 유효성을 위해 문자열 목록을 적용하는 방법으로 AddStringListRule 를 사용합니다. 하지만 위에서 언급한 엑셀의 문자 제한 때문에 저장 방법은 여전히 ​​작동합니다. 하지만 목록의 길이가 255자를 초과하면 심각한 문제가 발생할 수 있다는 점에 유의해야 합니다. 바로 파일을 열 때 Excel이 충돌하는 현상입니다. 다음은 이 문제를 설명하는 예시입니다.

using IronXL;
using IronXL.DataValidations;

// Set your license key here if you have one
IronXL.License.LicenseKey = "YOUR-LICENSE-KEY";
var workBook = WorkBook.Create(ExcelFileFormat.XLSX);

var sheet = workBook.CreateWorkSheet("Validation Rule Example using");
// Apply rules from row 2 down to row 500
var validationRangeStart = "2";
var validationRangeFinish = "500";

// --- 1. Define All Column Headers ---
sheet["A1"].Value = "String List Test";
sheet["B1"].Value = "Formula List Test";
sheet["A1:B1"].Style.Font.Bold = true;

// 256
string[] arrayString = new string[]
{
    "SKU-A01-R", "SKU-A02-R", "SKU-A03-R", "SKU-A04-R", "SKU-A05-R",
    "SKU-B01-G", "SKU-B02-G", "SKU-B03-G", "SKU-B04-G", "SKU-B05-G",
    "SKU-C01-B", "SKU-C02-B", "SKU-C03-B", "SKU-C04-B", "SKU-C05-B",
    "SKU-D01-Y", "SKU-D02-Y", "SKU-D03-Y", "SKU-D04-Y", "SKU-D05-Y",
    "END-001", "END-002", "END-003", "END-004", "END-005", "END-010", "END-001"
}; // total char with seperator 257 (230 char + 26 sperator [,] )

// no problem when write to a file
var skuValidation = sheet.DataValidations.AddStringListRule(sheet[$"A{validationRangeStart}:A{validationRangeFinish}"].RangeAddress, arrayString);

// set error box
skuValidation.ShowErrorBox = true;
skuValidation.ErrorBoxTitle = "Invalid SKU";
skuValidation.ErrorBoxText = "Please select a SKU from the list.";
skuValidation.ErrorAlert = ErrorAlert.Stop;
            
//attempt to save the file
var fileName = "CategoryProductCatalog.xlsx";
workBook.SaveAs(fileName);

코드 내에서 우리는 드롭다운 목록을 만들기 위해 문자열 목록의 소스로 arrayString 라는 문자열 목록을 전달하려고 하고 있습니다. 그런 다음 이를 CategoryProductCatalog.xlsx 로 저장하려고 합니다. 하지만 이러한 제한 사항 때문에 Microsoft Excel로 파일을 열면 파일이 손상되어 열 수 없다는 메시지가 표시됩니다.

대체 텍스트


IronXL 솔루션

이 Excel 제한 사항을 적절히 해결하기 위해 IronXL은 DataValidations 속성에서 사용할 수 있는 방법 AddFormulaListRule 를 제공합니다. 이 방법은 엑셀을 사용하는 해결 방법과 유사합니다.

먼저 워크시트의 셀 범위에 값 목록을 입력합니다. 그런 다음 그 범위를 드롭다운 목록의 소스로 참조하려면 AddFormulaListRule 를 사용하십시오. Excel 솔루션에 사용한 것과 동일한 방법으로 제한 사항을 효과적으로 우회하였지만, 이번에는 프로그래매틱합니다.

Excel 제한 사항을 적절히 우회할 뿐만 아니라 AddFormulaListRule 를 사용하면 값이 긴 목록으로 파일을 열 때 Excel에서 파일이 읽기 쉽고 안정성을 유지하도록 합니다.


코드 예제

다음은 이 문제를 해결하는 추가 예제 코드입니다. 같은 통합 문서를 사용하여 먼저 워크시트를 만든 다음 모든 열 머리글을 정의합니다. 이전 예제의 문자열 목록과 기능 설명을 위한 새로운 데이터를 입력했습니다. 그런 다음 위의 유효성 검증 범위를 사용하여 AddFormulaListRule 을 호출합니다. 그런 다음 마지막으로 이를 validationRuleExample.xlsx 로 저장합니다. 통합 문서가 손상되지 않고 정상적으로 사용할 수 있는지 확인하기 위해 엑셀에서 해당 문서를 엽니다. 이 단계는 우리 코드가 성공적으로 구현되었음을 보여주기 때문에 매우 중요합니다.

using IronXL;
using IronXL.DataValidations;
using System;

// Set your license key here if you have one
IronXL.License.LicenseKey = "YOUR-LICENSE-KEY";
var workBook = WorkBook.Create(ExcelFileFormat.XLSX);

var sheet = workBook.CreateWorkSheet("Validation Rule Example using");
// Apply rules from row 2 down to row 500
var validationRangeStart = "2";
var validationRangeFinish = "500";

// --- 1. Define All Column Headers ---
sheet["A1"].Value = "String List Test";
sheet["B1"].Value = "Formula List Test";
sheet["A1:B1"].Style.Font.Bold = true;

string[] arrayString2 = new string[] 
{ 
    "SKU-A01-R", "SKU-A02-R", "SKU-A03-R", "SKU-A04-R", "SKU-A05-R",
    "SKU-B01-G", "SKU-B02-G", "SKU-B03-G", "SKU-B04-G", "SKU-B05-G",
    "SKU-C01-B", "SKU-C02-B", "SKU-C03-B", "SKU-C04-B", "SKU-C05-B",
    "SKU-D01-Y", "SKU-D02-Y", "SKU-D03-Y", "SKU-D04-Y", "SKU-D05-Y",
    "END-001", "END-002", "END-003", "END-004", "END-005", "END-010", "END-001",
    "IRON01","IRON02","IRON03","IRON04","IRON05","IRON06","IRON07","IRON08","IRON09","IRON10",
    "IRON11","IRON12","IRON13","IRON14","IRON15","IRON16","IRON17","IRON18","IRON19","IRON20",
    "IRON21","IRON22","IRON23","IRON24","IRON25","IRON26","IRON27","IRON28","IRON29","IRON30",
    "IRON31","IRON32","IRON33","IRON34","IRON35","IRON36","IRON37","IRON38","IRON39","IRON40",
    "IRON41","IRON42","IRON43","IRON44","IRON45","IRON46","IRON47","IRON48","IRON49","IRON50",
    "IRON51","IRON52","IRON53","IRON54","IRON55","IRON56","IRON57","IRON58","IRON59","IRON60",
    "IRON61","IRON62","IRON63","IRON64","IRON65","IRON66","IRON67","IRON68","IRON69","IRON70",
    "IRON71","IRON72","IRON73","IRON74","IRON75","IRON76","IRON77","IRON78","IRON79","IRON80",
    "IRON81","IRON82","IRON83","IRON84","IRON85","IRON86","IRON87","IRON88","IRON89","IRON90",
    "IRON91","IRON92","IRON93","IRON94","IRON95","IRON96","IRON97","IRON98","IRON99","IRON100"
}; // total char with seperator 257 (230 char + 26 sperator [,] )

//Write the contents of your array to column A of the data sheet.
for (int i = 0; i < arrayString2.Length; i++)
{
    // Note: IronXL row and cell indices are 1-based.
    sheet[$"A{i + 1}"].Value = arrayString2[i];
}

// Create the formula string that points to our data range.
// This will look like: 'ValidationData'!$A$1:$A$100

string formula = $"'{sheet.Name}'!$A$1:$A${arrayString2.Length}";
Console.WriteLine($"Generated formula for validation: {formula}");

var sku2Validation = sheet.DataValidations.AddFormulaListRule(sheet[$"B{validationRangeStart}:B{validationRangeFinish}"], formula);

sku2Validation.ShowErrorBox = true;
sku2Validation.ErrorBoxTitle = "Invalid SKU2";
sku2Validation.ErrorBoxText = "Please select a SKU from the list.";
sku2Validation.ErrorAlert = ErrorAlert.Stop;

// --- Final Touches ---
sheet.AutoSizeColumn(0, true);
sheet.AutoSizeColumn(1, true);

var fileName = "validationRuleExample.xlsx";
workBook.SaveAs(fileName);

Console.WriteLine($"Successfully created '{fileName}' with 2 validation rules example.");

출력 엑셀 파일

보시다시피, Excel 파일은 안정적이며 AddFormulaListRule 사용 후에도 충돌을 일으키지 않습니다. 직접 사용해 보시려면 이 링크에서 본 문서에 사용된 애플리케이션의 데모와 엑셀 파일을 확인하세요. 이 데모를 통해 실제 작동 방식을 살펴보고 업무에 적용하는 방법을 이해할 수 있습니다.

Curtis Chau
기술 문서 작성자

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

...
더 읽어보기

시작할 준비 되셨나요?

Nuget Downloads 2,237,574버전:2026.9방금 출시

지금 바로 30일 무료 체험판 키를 받으세요.
신용카드나 계정 생성은 필요하지 않습니다.
PDF용 C# NuGet 라이브러리
NuGet을 사용하여 설치하세요

버전: 2026.9

PM > Install-Package IronXL.Excel
nuget.org/packages/IronXL.Excel/
  1. 솔루션 탐색기에서 참조를 마우스 오른쪽 버튼으로 클릭하고 NuGet 패키지 관리를 선택합니다.
  2. 찾아보기를 선택하고 "IronXL"을 검색하세요.
  3. 패키지를 선택하고 설치하세요
C# PDF DLL
DLL 다운로드

버전: 2026.9

  1. IronXL을 다운로드하고 솔루션 디렉터리 내의 ~/Libs와 같은 위치에 압축을 푸세요.
  2. Visual Studio 솔루션 탐색기에서 참조를 마우스 오른쪽 버튼으로 클릭합니다. 찾아보기를 선택하고 "IronXL.dll"을 선택합니다.

라이선스 가격은 749달러 부터 시작합니다.

Key in blue circle

무료 30일 체험 키를 즉시 받으세요.

Your trial license will be sent to your email address

제한 없음. 100% 무제한 이용. 신용카드 불필요.

bullet_checked신용카드나 계정 생성은 필요하지 않습니다.제한 없음. 100% 무제한 이용. 신용카드 불필요.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
무료 라이브 데모를 예약하세요
Booking Badge

전 세계 수백만 엔지니어들이 신뢰하는 제품입니다.

Iron Software의 고객 로고
부담 없는 무료 상담을 받아보세요
아래 양식을 작성하시거나 sales@ironsoftware.com으로 이메일을 보내주세요.
고객님의 정보는 항상 비밀로 유지됩니다.
전 세계 수백만 엔지니어들이 신뢰하는 제품입니다.
Iron Software의 고객 로고
지금 바로 30일 무료 체험판 키를 받으세요.
신용카드나 계정 생성은 필요하지 않습니다.