Excelize는 순수 Go로 작성된 라이브러리로, XLAM / XLSM / XLSX / XLTM / XLTX 파일의 읽기 및 쓰기를 가능하게 하는 일련의 함수를 제공합니다. Microsoft Excel™ 2007 이후 버전에서 생성된 스프레드시트 문서를 읽고 쓰는 것을 지원합니다. 높은 호환성 덕분에 복잡한 컴포넌트를 지원하며, 대량의 데이터를 포함하는 워크시트에서 데이터를 생성하거나 읽어올 수 있는 스트리밍 API를 제공합니다.
때로는 기존 Excel 문서 콘텐츠를 로드하거나, 새로운 Excel 문서를 생성하거나, 기존 문서(템플릿)를 기반으로 새로운 Excel 문서를 생성하고, 이미지나 차트와 같은 요소를 Excel 문서에 프로그램적으로 삽입해야 할 필요가 있습니다. 테이블과 같은 요소도 마찬가지입니다. 이러한 작업을 플랫폼 간에 구현해야 할 경우가 있을 수 있습니다. Excelize는 이러한 요구 사항을 쉽게 충족시킬 수 있습니다.
GitHub: github.com/xuri/excelize
Doc: xuri.me/excelize/ja
Excelize가 v2.11.1 버전을 출시했습니다. 이 버전에는 신규 기능, 버그 수정, 호환성 향상 등 30가지 이상의 업데이트가 포함되어 있으며, 30명의 개발자가 이 버전의 코드에 기여했습니다.
이 버전에서 가장 주목할 만한 변경 사항은 다음과 같습니다:
- 요구 사항 업데이트: 의존 패키지
golang.org/x/crypto의 업그레이션에 따라 Go 언어 버전 1.26.0 이상이 필요하게 되었습니다.
- 부정확한 공유 문자열 인덱스를 사용하여 셀 값을 가져올 때 발생하는 패닉을 수정했습니다 (CVE-2026-104819). 관련 보안 권고는 GHSA-48hm-4h8j-58fg입니다.
- 유효하지 않은 피벗 테이블 필드 인덱스로
GetPivotTables 함수가 패닉이 발생하는 문제를 수정했습니다 (CVE-2026-107211). 관련 보안 권고는 GHSA-mx22-3794-2vpv입니다.
- 행 이터레이터에서 행 번호가 무제한으로 되는 문제를 수정했습니다 (CVE-2026-107212). 관련 보안 권고는 GHSA-jw42-f3rr-4cc3입니다.
- 드로잉 파트가 없는 워크시트에서
GetSlicers 함수가 패닉이 발생하는 문제를 수정했습니다 (CVE-2026-107213). 관련 보안 권고는 GHSA-r7x5-4969-99p7입니다.
- 잘못된 형식의 워크북을 복호화할 때 패닉이 발생하는 문제를 수정했습니다 (CVE-2026-107214). 관련 보안 권고는 GHSA-2j4c-ffch-9f23입니다.
- 워크북 복호화 시
EncryptionInfo와 EncryptedPackage의 스트림 크기가 무제한으로 할당되는 문제를 수정했습니다 (CVE-2026-107215). 관련 보안 권고는 GHSA-x2q3-8cjh-766f입니다.
- ANCHORARRAY 수식의 순환 참조로 인해
CalcCellValue 함수에서 스택 오버플로우가 발생하는 문제를 수정했습니다 (CVE-2026-107216). 관련 보안 권고는 GHSA-wp2g-vpjj-g53r입니다.
ColumnNameToNumber, JoinCellName
• 함수가 유효하지 않은 열 이름을 허용하고 정수 오버플로우(integer overflow)가 발생하는 문제 수정 (CVE-2026-107217), 관련 보안 권고 GHSA-c85p-xxjj-2r75
• LEFT, LEFTB, RIGHT, RIGHTB 수식 함수에서 유니코드(Unicode) 처리 및 문자 수 오버플로우 수정 (CVE-2026-107218), 관련 보안 권고 GHSA-8jjq-8j9w-m2v6
• 아자일 복호화 키(agile decryption key) 도출 시 스핀 카운트가 무한대가 되는 문제 수정 (CVE-2026-107219), 관련 보안 권고 GHSA-jrfj-fhj2-jjvm
• 빈 결합 셀 참조를 가진 워크시트에서 패닉(panic)이 발생하는 문제 수정 (CVE-2026-107220), 관련 보안 권고 GHSA-g27h-8qhm-6pff
• 셀이 열 순서대로 정렬되지 않은 행에서 패닉이 발생하는 문제 수정 (CVE-2026-107221), 관련 보안 권고 GHSA-8mcq-6wmr-jrjv
• 잘못된 조건부 서식 규칙으로 인해 GetConditionalFormats 함수가 패닉(panic)이 발생하는 문제 수정 (CVE-2026-107222), 관련 보안 권고 GHSA-rxcj-4pj5-74gr
• 최소 및 최대 열 번호 오버플로우 수정 (CVE-2026-107223), 관련 보안 권고 GHSA-fq3v-74gv-27gm
• 부호 있는 int64에 들어가지 않는 Zip64 비압축 크기를 거부하여 패닉을 수정 (CVE-2026-107224), 관련 보안 권고 GHSA-fw94-4wwp-w8pw
• 음수 스타일 인덱스로 스타일을 가져올 때 발생하는 패닉 수정 (CVE-2026-107225), 관련 보안 권고 GHSA-5h23-36rv-pm65
• 새로운 데이터 타입 EmbeddedObject 추가 - 두 개의 새 상수(MaxCFBStreamSizeV3, MaxCFBStreamSizeV4) 추가:
• 도형(shape)을 가져오는 것을 지원하는 새로운 함수 GetShapes 추가, 관련 문제 436: 임베디드 객체(embedded object)를 가져오고 설정하는 것을 지원하는 새로운 함수 GetEmbeddedObjects와 SetGetEmbeddedObject 추가, 관련 문제 158, 2186:
• CalcCellValue 함수에서 AND 수식 함수의 행렬 인수(matrix arguments) 지원 -
• SetConditionalFormat 함수에서 스타일 인덱스를 검증하도록 변경, 관련 문제 2400
• SetCellValue 함수에서 저장되는 값의 숫자 정밀도(numerical precision)를 Microsoft Excel™에 맞게 조정, 관련 문제 1757
• 일부 경우 GetPictures 함수가 편집 위치를 반환하지 않는 문제 수정, 관련 문제 2217 -
• 괄호 또는 연산자 내부에 오류 값(error value)이 포함된 경우 CalcCellValue 함수가 잘못된 계산 결과를 반환하는 문제 수정, 관련 문제 1164, 2344 -
• 일부 경우 CalcCellValue 함수가 예상되는 오류를 반환하지 않는 문제 수정, 관련 문제 2349, 2432 -
• CalcCellValue 함수가 16개의 수식 함수에서 잘못된 결과를 반환하는 문제 수정: COUNT, COUNTA, EDATE, HLOOKUP, IF, INDIRECT, ISNUMBER, MDETERM, MINVERSE, OR, SUM, TRIM, VALUE, VLOOKUP, WEEKDAY, XLOOKUP, 관련 문제 2411, 2412, 2413, 2414, 2415, 2416, 2417, 2430, 2436, 2439, 2445 -
• 수식 내부에 닫는 괄호가 대응하지 않는 경우 CalcCellValue 함수가 패닉(panic)이 발생하는 문제 수정, 관련 문제 2409 -
• 유효하지 않은 인수로 AVERAGEIFS, COUNTIFS, MAXIFS, MINIFS, PERCENTILE.EXC, SUMIFS 수식 함수를 계산할 때 CalcCellValue 함수가 패닉(panic)이 발생하는 문제 수정, 관련 문제 2426 -
• 일부 경우 AddChart, AddChartSheet
무효한 그래프를 생성하고 워크북이 손상되는 문제를 수정했습니다. 관련 문제 2355, 2356
-
StreamWriter가 시간 간격의 셀 값에 숫자 서식을 적용하지 않는 문제를 수정했습니다. 관련 문제 2371
-
time.Duration으로 셀 값을 설정할 때 정밀도가 손실되는 문제를 수정했습니다. 관련 문제 2372
-
AddSlicer 함수가 다른 필드에 대해 피벗 테이블의 슬라이서 캐시를 재사용하는 문제를 수정했습니다. 관련 문제 2383
-
패턴이 없는 채우기(no pattern fill)에 대해 GetStyle 함수가 유효하지 않은 스타일을 반환하는 문제를 수정했습니다. 관련 문제 2384
-
워크북이 절대 경로를 사용할 때 GetFormControls, GetTables 함수가 폼 컨트롤과 테이블을 가져올 수 없는 문제를 수정했습니다. 관련 문제 2386
-
일부 경우에 GetPanes 함수가 분할 창(pane)을 가져오지 못하는 문제를 수정했습니다. 관련 문제 2387
-
SetCalcProps 함수가 계산 속성(calculation properties)을 false로 설정할 수 없는 문제를 수정했습니다. 관련 문제 2404
-
ExcelDateToTime 함수가 1900년 1월과 2월의 날짜를 하루 전 날짜로 반환하는 문제를 수정했습니다. 관련 문제 2466
-
Go Modules는 모듈 업데이트에 의존합니다.
-
단위 테스트 및 문서 업데이트
-
다국어 지원 문서 웹사이트가 업데이트되었습니다: 아랍어, 독일어, 영어, 스페인어, 프랑스어, 이탈리아어, 일본어, 한국어, 포르투갈어, 러시아어, 중국어 (간체), 중국어 (번체)
-
excelize-wasm WebAssembly/JavaScript 지원용 NPM 패키지 릴리스 업데이트
-
excelize-py Python용 PyPI 패키지 릴리스 업데이트
-
ExcelizeCs C#용 NuGet .Net 패키지 릴리스 업데이트
Excelize에 기여해주신 모든 분들께 감사드립니다. 아래는 이번 버전에 코드를 기여한 기여자 목록입니다:
- Aprax14 (Damiano Scarpellini)
- xixixi1118
- zhouxuanyu1204-bot (ZHOU XUANYU)
- lzoeydzdnn
- arpitjain099 (Arpit Jain)
- n0liu (Roland)
- 1436761858 (LP-LDY)
- yashisrani (Yash Israni)
- alliasgher (Ali Asghar)
- ensiouel
- a3190778733-pixel (shixia)
- Nayjest (Vitalii Stepanenko)
- ValeryVerkhoturov (Valery)
- freeeve (Eve Freeman)
- saifulferoz (Feroz)
- lmonstergg
- pcvelz (Peter van Velzen)
- askalf (Thomas Sprayberry)
- zac-scheiwe (Zac Scheiwe)
- lrweck (Luis)
- akashchamp
- PhilflowIO (Philipp Lütje)
- White0xdi3 (Jnyandeep Koyya)
- keithadler (Keith Adler)
- EpicHigh (Prasit Tongpradit)
- wangyica879112 (ChangAo)
- yl030628 (YL)
- prostomarkeloff (prostomarkeloff)
- Gabik21
- Alifarid0011 (AliFarid)