HotXLS 문서

사용자 지정 색 팔레트

개요

Excel 통합 문서는 두 가지 모델로 색 서식을 관리합니다. BIFF8(클래식 XLS)의 이전 56색 인덱스 팔레트와 OpenXML (XLSX)의 임의 RGB 바인딩 또는 테마 슬롯입니다. HotXLS는 팔레트 매핑 인덱스를 사용자 지정하는 API를 제공하며 이러한 형식 간의 차이를 원활하게 연결합니다

팔레트 색 인덱싱

BIFF8 형식은 서식 색을 8부터 63까지의 인덱스 항목에 매핑합니다. 통합 문서 색 인터페이스를 사용하여 기본 색 정의를 재정의할 수 있습니다

procedure SetColor(const AIndex: Integer; const AColor: TColor);

팔레트 인덱스를 업데이트하지 않고 사용자 지정 RGB 값을 셀에 직접 할당하면 HotXLS가 자동으로 통합 문서의 활성 팔레트에서 가장 가까운 색에 매핑합니다

결정론적 인덱스 색 해석

IXLSWorkbook과 TXLSXWorkbook은 통합 문서를 변경하지 않고 인덱스를 해석하는 동일한 ResolveIndexedColor 오버로드를 노출합니다

호출자는 소스 인덱스 공간을 공개 ColorIndex, BIFF icv, OOXML indexed 중 하나로 지정합니다. 결과는 팔레트, automatic, system, invalid 토큰을 서로 구분해 유지하고, 구체적인 색을 사용할 수 있을 때만 정규화된 ARGB 값을 보고합니다

system 및 automatic 토큰은 현재 데스크톱 설정을 암시적으로 읽지 않습니다. 환경에 따른 RGB 출력이 필요하면 명시적인 system-color resolver를 전달하십시오

사용 역할(usage role)은 형식별 의미를 보존합니다. 예를 들어 BIFF border 인덱스 0은 검은색이 아니라 미지정(unspecified)을 뜻합니다

RGB 값을 가장 가까운 물리적 팔레트 항목에 매핑해야 한다면 NearestIndexedColor를 사용하십시오. 공유 캐시 OKLab 매처가 통합 문서를 변경하지 않고 공개 인덱스와 물리적 인덱스를 반환합니다

팔레트 변경을 계획하기 전에 결정론적인 56슬롯 사용 현황이 필요하면 ScanIndexedColorUsage를 사용하십시오. 스타일, 워크시트 개체, 차트, 메모, 조건부 서식의 정의와 참조가 해당 슬롯을 locked로 표시합니다

비변경 팔레트 계획

BuildBiffPalettePlan을 사용하면 통합 문서를 변경하지 않고도 직접 RGB와 해석된 테마 색이 56개의 물리적 BIFF 팔레트 슬롯에 어떻게 배치될지 미리 볼 수 있습니다

계획은 locked로 보고된 인덱스 슬롯을 모두 보존하고, 기존의 정확한 색은 일치하는 가장 낮은 슬롯에 유지하며, 용량이 남는 동안 정확한 색을 배정하고, 고유 대상 수가 빈 슬롯을 초과할 때만 빈도 가중 결정론적 OKLab 클러스터링을 사용합니다

각 대상은 선택된 공개·물리적 인덱스, 매핑된 ARGB 값, 빈도 가중치, 제곱 지각 거리, 정확 일치 여부를 보고합니다. 요약 필드는 정확 일치 가중치, 가중 오차, 최대 오차, 변경된 슬롯 수, 양자화 필요 여부를 보고합니다

소스 팔레트 세대 값과 해시를 통해 ApplyBiffPalettePlan이 슬롯을 변경하기 전에 오래되었거나 변조된 계획을 거부합니다. 적용에 성공하면 캐시된 매처를 한 번 다시 만들고, 유효한 no-op 계획은 세대 값을 변경하지 않습니다

클래식 통합 문서는 BiffPaletteSavePolicy도 노출합니다. 기본값은 기존 팔레트를 보존하고, 명시적 최적화 값은 BIFF8 출력에 한해 현재 계획을 만들어 적용하며, 저장이 실패하거나 취소되면 원래 팔레트를 복원합니다

풍부한 RGB 색 매핑

XLSX 통합 문서는 팔레트 제한을 우회하고 24비트 RGB 값을 직접 할당할 수 있도록 허용합니다. 아래의 색 변환 API를 확인하십시오