IronXL 문제 해결 Excel의 제한 사항: 문자열 목록에 대한 데이터 유효성 검사 엑셀에서 문자열 데이터 유효성 검사에 대한 제한 사항 커티스 차우 업데이트됨:8월 19, 2025 다운로드 IronXL NuGet 다운로드 DLL 다운로드 무료 체험 시작하기 LLM용 사본 LLM용 사본 LLM용 마크다운 형식으로 페이지를 복사하세요 ChatGPT에서 열기 ChatGPT에 이 페이지에 대해 문의하세요 제미니에서 열기 제미니에게 이 페이지에 대해 문의하세요 Grok에서 열기 Grok에게 이 페이지에 대해 문의하세요 혼란 속에서 열기 Perplexity에게 이 페이지에 대해 문의하세요 공유하다 페이스북에 공유하기 트위터에 공유하기 LinkedIn에 공유하기 URL 복사 이메일로 기사 보내기 This article was translated from English: Does it need improvement? Translated View the article in English Microsoft Excel에는 문자열 목록의 길이에 대한 알려진 제한 사항이 있는데, 쉼표와 같은 구분 기호를 포함하여 목록의 전체 길이는 255자를 초과할 수 없다는 것입니다. 이 문제는 아래 그림과 같이 Excel 시트의 기존 범위에서 데이터를 선택하는 대신 소스 필드에 문자열 목록을 수동으로 입력할 때 발생합니다. 엑셀 제한 문제 엑셀 제한 사항 해결 방법 이러한 제한 사항에 대한 일반적인 해결 방법은 원본 필드에 문자열 목록을 입력하는 대신 워크시트 내의 열이나 행에 값 목록을 만드는 것입니다. 아래 그림과 같습니다. 예시: 엑셀 제한 해결 방법 그 후, 데이터 유효성 검사에서 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); 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); $vbLabelText $csharpLabel 코드 내에서, 드롭다운 목록을 생성하기 위한 문자열 목록의 소스로 arrayString라는 이름의 문자열 목록을 전달하려고 합니다. 그런 다음 이 목록을 CategoryProductCatalog.xlsx로 저장하려고 합니다. 하지만 이러한 제한 사항 때문에 Microsoft Excel로 파일을 열면 파일이 손상되어 열 수 없다는 메시지가 표시됩니다. IronXL 솔루션 이러한 Excel의 제한 사항을 적절히 해결하기 위해 IronXL AddFormulaListRule 메서드를 제공하며, 이 메서드는 DataValidations 속성에서 사용할 수 있습니다. 이 방법은 엑셀을 사용하는 해결 방법과 유사합니다. 먼저 워크시트의 셀 범위에 값 목록을 입력합니다. 그런 다음 AddFormulaListRule를 사용하여 해당 범위를 드롭다운 목록의 소스로 참조합니다. 이렇게 하면 Excel 솔루션에서 사용했던 것과 동일한 방법으로 제한 사항을 효과적으로 우회할 수 있지만, 이 경우에는 프로그래밍 방식으로 처리합니다. AddFormulaListRule를 올바르게 사용하면 Excel의 제한 사항을 해결할 뿐만 아니라 긴 값 목록이 있더라도 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."); 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."); $vbLabelText $csharpLabel 출력 엑셀 파일 보시다시피, AddFormulaListRule를 사용한 후에도 Excel 파일은 안정적이며 충돌이 발생하지 않습니다. 직접 사용해 보시려면 이 링크에서 본 문서에 사용된 애플리케이션의 데모와 엑셀 파일을 확인하세요. 이 데모를 통해 실제 작동 방식을 살펴보고 업무에 적용하는 방법을 이해할 수 있습니다. 커티스 차우 지금 바로 엔지니어링 팀과 채팅하세요 기술 문서 작성자 커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다. 커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다. A PHP Error was encountered Severity: Notice Message: Undefined index: IronXl.Excel Filename: helpers/counter_helper.php Line Number: 85 Backtrace: File: /var/www/ironpdf.com/application/helpers/counter_helper.php Line: 85 Function: _error_handler File: /var/www/ironpdf.com/application/views/main/sections/ready_to_started_202509.php Line: 12 Function: getTotalDonwloadNumber File: /var/www/ironpdf.com/application/libraries/Render.php Line: 489 Function: view File: /var/www/ironpdf.com/application/controllers/Products/Troubleshooting.php Line: 27 Function: render_products_view File: /var/www/ironpdf.com/index.php Line: 292 Function: require_once A PHP Error was encountered Severity: Notice Message: Undefined index: IronXl.Excel Filename: helpers/counter_helper.php Line Number: 85 Backtrace: File: /var/www/ironpdf.com/application/helpers/counter_helper.php Line: 85 Function: _error_handler File: /var/www/ironpdf.com/application/views/main/sections/ready_to_started_202509.php Line: 19 Function: getTotalDonwloadNumber File: /var/www/ironpdf.com/application/libraries/Render.php Line: 489 Function: view File: /var/www/ironpdf.com/application/controllers/Products/Troubleshooting.php Line: 27 Function: render_products_view File: /var/www/ironpdf.com/index.php Line: 292 Function: require_once 시작할 준비 되셨나요? Nuget 다운로드 1,890,100 | 버전: 2026.3 방금 출시되었습니다 무료 체험 시작하기 NuGet 무료 다운로드 총 다운로드 수: 1,890,100 라이선스 보기 Docs 이 페이지에서 시작하기시작하기 개요Interop 없이 C#에서 Excel과 작업하기라이선스 키 사용IronXL 라이브러리를 설치하세요macOS에서 사용리눅스에서 사용클라우드/컨테이너에 배포Azure에 배포AWS에 배포Docker에 설정기타 .NET 언어 지원.NET MAUI에서 Excel로 작업하기Blazor에서 Excel 파일 읽기VB.NET Excel 파일 작업튜토리얼C#에서 Excel 파일을 읽는 방법C#으로 Excel 파일 생성하기C#을 사용하여 Excel 파일을 열고 쓰는 방법방법워크북스프레드시트 만들기스프레드시트 불러오기C#에서 Excel로 내보내기XLSX 파일 읽기 (C#)C#에서 CSV 파일을 읽는 방법ASP.NET 웹 앱에서 Excel 파일 읽기.NET에서 CSV 파일 작성C#에서 Excel 워크시트 열기데이터 테이블을 CSV로 변환XLSX 파일을 CSV, JSON, XML 형식으로 변환스프레드시트 파일 형식 변환데이터세트로 가져오기 및 내보내기통합 문서 메타데이터 편집암호를 사용하여 통합 문서를 암호화합니다.워크시트 관리워크시트수식 편집범위 선택명명된 범위이름이 지정된 테이블차트 생성 및 편집냉동 유리행과 열을 추가합니다행과 열의 크기를 자동으로 조정합니다암호로 워크시트를 암호화하세요그룹화 및 그룹 해제이미지 추가, 추출 및 삭제C#으로 Excel 차트 생성하기세포 범위.NET에서 Excel 값을 작성하기C#에서 Excel 데이터 가져오기셀 범위 정렬트림 셀 범위클리어 셀복사 셀하이퍼링크 설정셀 병합 및 병합 해제셀 글꼴 및 크기세포 경계 및 정렬배경 패턴 및 색상조건부 서식수학 함수댓글 추가셀 데이터 서식 설정C#에서 Excel 파일 편집문제 해결문제 해결 가이드IronXL에 라이선스 키를 적용하세요파일 크기 제한Excel의 제한 사항: 문자열 목록에 대한 데이터 유효성 검사자주 묻는 질문IronXL - 보안 CVE예외 메시지Web.config에서 라이선스 키 설정하기제품 업데이트변경 로그주요 이정표주요 성과: 실적주요 성과: 향상비디오 튜토리얼API 참조 이 페이지에서 엑셀 제한 사항 해결 방법IronXL에서 발생하는 문제IronXL 솔루션 A PHP Error was encountered Severity: Notice Message: Undefined index: IronXl.Excel Filename: helpers/counter_helper.php Line Number: 85 Backtrace: File: /var/www/ironpdf.com/application/helpers/counter_helper.php Line: 85 Function: _error_handler File: /var/www/ironpdf.com/application/views/main/sections/still_scrolling_202512.php Line: 17 Function: getTotalDonwloadNumber File: /var/www/ironpdf.com/application/views/products/sections/three_column_docs_page_structure.php Line: 71 Function: view File: /var/www/ironpdf.com/application/libraries/Render.php Line: 88 Function: view File: /var/www/ironpdf.com/application/views/products/troubleshooting/index.php Line: 2 Function: view File: /var/www/ironpdf.com/application/libraries/Render.php Line: 88 Function: view File: /var/www/ironpdf.com/application/libraries/Render.php Line: 552 Function: view File: /var/www/ironpdf.com/application/controllers/Products/Troubleshooting.php Line: 27 Function: render_products_view File: /var/www/ironpdf.com/index.php Line: 292 Function: require_once A PHP Error was encountered Severity: Notice Message: Undefined index: IronXl.Excel Filename: helpers/counter_helper.php Line Number: 85 Backtrace: File: /var/www/ironpdf.com/application/helpers/counter_helper.php Line: 85 Function: _error_handler File: /var/www/ironpdf.com/application/views/main/sections/still_scrolling_202512.php Line: 24 Function: getTotalDonwloadNumber File: /var/www/ironpdf.com/application/views/products/sections/three_column_docs_page_structure.php Line: 71 Function: view File: /var/www/ironpdf.com/application/libraries/Render.php Line: 88 Function: view File: /var/www/ironpdf.com/application/views/products/troubleshooting/index.php Line: 2 Function: view File: /var/www/ironpdf.com/application/libraries/Render.php Line: 88 Function: view File: /var/www/ironpdf.com/application/libraries/Render.php Line: 552 Function: view File: /var/www/ironpdf.com/application/controllers/Products/Troubleshooting.php Line: 27 Function: render_products_view File: /var/www/ironpdf.com/index.php Line: 292 Function: require_once 아직도 스크롤하고 계신가요? 빠른 증거를 원하시나요? PM > Install-Package IronXl.Excel 샘플을 실행하세요 데이터가 스프레드시트로 변환되는 것을 지켜보세요. NuGet 무료 다운로드 총 다운로드 수: 1,890,100 라이선스 보기