HotXLS Docs

개요

HotXLS Logo
HotXLS Excel 읽기/쓰기 라이브러리는 Delphi & C++Builder를 위한 고성능 Excel 읽기/쓰기 컴포넌트입니다 컴퓨터에 Microsoft Excel 또는 Office가 설치되어 있지 않아도 새 Excel 스프레드시트를 생성하고 기존 XLS 및 XLSX 통합 문서를 읽거나 수정할 수 있습니다
HotXLS는 완전히 Object Pascal로 작성되었습니다. 바이너리 및 OOXML 수준에서 Excel 파일을 직접 읽고 씁니다 따라서 COM/OLE 자동화 오버헤드가 없으며 Office 라이선스나 설치에 대한 의존성도 없습니다 HotXLS는 Delphi 및 C++Builder XE5부터 13 Florence까지 지원합니다
클래식 XLS 색상 서식은 의도적으로 팔레트 기반으로 유지됩니다. ThemeColor / TintAndShade 결정 사항은 클래식 XLS 색상 모델을 참조하십시오

이중 파사드 아키텍처

HotXLS는 레거시 XLS 코드와 새로운 XLSX 코드가 리팩토링 없이 공존할 수 있도록 두 개의 파사드 유닛을 동시에 제공합니다:
lxHandle Excel 97–2003 BIFF8 형식(.xls)과 HTML, RTF, CSV, TSV 내보내기를 위한 기본 파사드입니다 기존 사용자 코드는 변경 없이 이 유닛을 계속 사용합니다. 진입점: TXLSWorkbook, TXLSWorksheet, IXLSWorkbook, IXLSRange
lxHandleX Excel 2007+ OOXML 형식(.xlsx) 및 OpenDocument Spreadsheet(.ods) 읽기/쓰기를 위한 기본 파사드입니다 XLSX 특유의 동작이 BIFF 코드 경로에 소급 적용되지 않도록 자체적인 통합 문서 및 워크시트 유형을 제공합니다. 진입점: TXLSXWorkbook, TXLSXWorksheet, TXLSXCell
두 파사드는 동일한 수식 엔진, 동일한 유니코드 지원 레이어 및 동일한 내보내기 파이프라인을 공유합니다 lxHandleX가 제공하는 전체 클래스 계층 구조는 XLSX 파사드 개요를 참조하십시오

빠른 시작

다음 코드 예제는 워크시트 하나가 있는 통합 문서를 만들고 셀에 값을 쓰는 최소한의 코드를 보여줍니다.

클래식 XLS (lxHandle)

uses lxHandle;

var
  Book: IXLSWorkbook;
  ws:   TXLSWorksheet;
begin
  Book := TXLSWorkbook.Create;
  // 워크시트를 추가하고 이름을 지정합니다
  ws := Book.Sheets.Add;
  ws.Name := 'Sheet1';

  // A1 표기법을 사용하여 셀에 값을 씁니다
  ws.Range['A1'].Value := 'Hello';
  ws.Range['B1'].Value := 42;
  ws.Range['C1'].Formula := '=B1*2';

  // 기본 서식을 적용합니다
  ws.Range['A1'].Font.Bold := True;
  ws.Range['A1'].Interior.Color := clYellow;

  Book.SaveAs('output.xls');
end;

XLSX (lxHandleX)

uses lxHandleX;

var
  Book: TXLSXWorkbook;
  ws:   TXLSXWorksheet;
  cell: TXLSXCell;
begin
  Book := TXLSXWorkbook.Create;
  try
    ws := Book.Sheets.Add('Sheet1');

    // 문자열과 숫자 값을 씁니다
    ws.Cells[1, 1].Value := 'Product';
    ws.Cells[1, 2].Value := 'Price';
    ws.Cells[2, 1].Value := 'Widget';
    ws.Cells[2, 2].Value := 9.99;

    // 통화 숫자 형식을 적용합니다
    cell := ws.Cells[2, 2];
    cell.NumberFormat := '$#,##0.00';

    Book.SaveAs('output.xlsx');
  finally
    Book.Free;
  end;
end;
두 파사드를 하나의 데모 프로젝트에서 모두 다루는 더 광범위한 안내는 API 투어 데모를 참조하십시오

기능

파일 I/O 및 스트림 지원

기존 Excel 파일 읽기, 신규 또는 기존 Excel 파일 쓰기, 클래식 XLS 암호 보호 및 XLSX 암호화 저장 워크플로 처리, 전체 통합 문서를 로드하지 않고 XLS 및 XLSX 파일 또는 스트림에서 시트 이름 빠르게 목록 조회 등을 지원합니다 IXLSWorkbook.OpenCSV를 통해 CSV를 통합 문서로 여는 것도 지원됩니다

셀 값 및 수식

숫자, 문자열, 날짜/시간, 부울, 수식 등 Excel의 모든 네이티브 유형의 셀 값을 읽고 씁니다 내장 계산 엔진은 클래식 XLS 및 XLSX 통합 문서 모두에서 수식을 평가하며 다음을 지원합니다:
  • 텍스트 함수 (LEFT, MID, TRIM, SUBSTITUTE, …)
  • 날짜 및 근무일 함수 (DATE, NETWORKDAYS, WORKDAY, …)
  • 공학 및 진법 변환 함수 (BIN2DEC, HEX2DEC, …)
  • 비트 연산 함수 (BITAND, BITOR, BITXOR, …)
  • 통계 및 집계 함수 (AVERAGE, SUMIF, COUNTIFS, …)
  • 수학 함수 (ROUND, MOD, POWER, …)
OnUserFunction 콜백을 통해 런타임에 사용자 정의 또는 지원되지 않는 워크시트 함수를 처리할 수 있습니다 서명 및 예제는 OnUserFunction 콜백을 참조하십시오
수식 평가 예시

셀 서식

셀 모양 속성에 대한 전체 액세스:
  • 글꼴 — 이름, 크기, 색상(RGB 또는 테마 색상 + 색조), 굵게, 기울임꼴, 밑줄, 취소선, 위첨자, 아래첨자, 그림자, 윤곽선
  • 맞춤 — 가로 및 세로 맞춤, 텍스트 방향(각도), 들여쓰기 수준, 자동 줄 바꿈, 셀에 맞춤, 읽기 순서(RTL/LTR)
  • 테두리 — 4개의 모서리와 대각선, 선 스타일, 두께, RGB / 테마 색상
  • 내부(채우기) — 단색 채우기, 패턴 채우기, TintAndShade가 포함된 테마 색상을 포함한 전경색 및 배경색
  • 숫자 형식 — 날짜, 시간, 통화, 백분율 및 과학적 표기법에 대한 내장 및 사용자 지정 형식 문자열
  • 메모 / 주석 — 셀 메모 추가, 읽기 및 스타일 지정

범위 작업

IXLSRange(클래식 파사드)와 TXLSXRange(XLSX 파사드)는 다양한 범위 작업을 제공합니다:
  • 셀 병합 및 병합 해제; 임의 셀의 병합 영역 액세스
  • 이동 방향 제어를 통한 범위 복사, 이동, 삽입 및 삭제
  • 개요/축소 보기를 위한 행 또는 열 그룹화 및 그룹 해제
  • 셀 내용에 맞게 행 높이 및 열 너비 자동 맞춤
  • 내장 명명된 셀 스타일 적용 (ApplyBuiltinStyle)
  • 다중 영역 선택 (TXLSWorksheet.SelectAreas)
  • 일괄 셀 처리를 위한 ForEachCell 반복 콜백

워크시트 기능

워크시트 수준 제어 범위:
  • 시트 이름, 탭 색상, 표시 여부(숨김/매우 숨김), 인덱스 기반 탐색
  • 권한별 세부 시트 보호; 통합 문서 수준 보호
  • 틀 고정, 창 분할, 스크롤 위치
  • 조건이 있는 자동 필터 범위; 목록 데이터 유효성 검사 규칙
  • 조건부 서식: 색 눈금(2색 및 3색), 데이터 막대, 아이콘 집합
  • 워크시트 내 텍스트 찾기 및 바꾸기
  • 보기 옵션: 눈금선 색상, 수식 표시 모드, 0 표시, 머리글 표시, 오른쪽에서 왼쪽으로 표시, 개요 기호 표시, 확대/축소 수준
  • 구조화된 표 (TXLSTable / TXLSXTable): 머리글 행 및 줄무늬 행이 있는 Excel 표 추가, 액세스 및 스타일 지정
  • 차트: TXLSWorksheetsAddChartSheetTXLSXChart를 통해 차트 시트 및 포함된 차트 추가

하이퍼링크 및 명명된 범위

IXLSHyperLinks를 통해 하이퍼링크(URL, mailto, 통합 문서 내 셀 참조)를 추가하고 읽을 수 있습니다 IXLSNames / TXLSXDefinedNames를 통해 통합 문서 및 워크시트 범위에서 명명된 범위를 정의하고 확인할 수 있습니다. 명명된 범위는 수식에서 사용되거나 RefersToRange를 통해 셀 범위로 역참조할 수 있습니다

이미지 및 도형

TXLSShapes.AddPicture / TXLSXWorksheet.AddImage를 통해 래스터 이미지(BMP, JPG, PNG, GIF)를 워크시트에 포함할 수 있습니다. TXLSShapes.AddTextBox를 통해 클래식 XLS에서 독립형 텍스트 상자를 만들 수 있습니다. BIFF8 드로잉에서 Excel이 만든 OfficeArt 커넥터 및 솔버 규칙을 유지하고, 전문적인 드로잉 워크플로를 위해 TXLSShape.OfficeArtOptions를 통해 도형 FOPT 옵션을 노출합니다

페이지 설정 및 인쇄

IXLSPageSetup을 통해 인쇄 레이아웃에 완전히 액세스할 수 있습니다:
  • 용지 크기(A4, Letter, Legal 및 기타 다양; PaperSize 참조)
  • 방향(세로/가로), 여백, 가로/세로 가운데 맞춤
  • Excel 서식 코드가 포함된 머리글 및 바닥글 문자열(굵게, 기울임꼴, 페이지 번호, 날짜 등; 머리글/바닥글 서식 코드 참조)
  • 수동 가로 및 세로 페이지 나누기
  • 페이지에 맞추기 배율; 확대/축소 비율; 인쇄 영역; 인쇄 제목(행/열 반복)
  • 초안 품질; 흑백; 눈금선 인쇄; 머리글 인쇄; 메모 인쇄

내보내기 형식

전체 통합 문서, 개별 워크시트 또는 임의의 셀 범위를 다음 형식으로 내보냅니다:
  • HTML — 미리 보기 또는 이메일 워크플로를 위한 전체 문서 또는 인라인 테이블 단편; TXLSHTMLExportTXLSXHtmlExportOptions를 통해 제어 가능
  • RTF — 워드 프로세서 가져오기를 위한 서식 있는 텍스트
  • CSV — 구성 가능한 구분 기호 및 인코딩을 사용하는 쉼표로 구분된 값
  • TSV — 탭으로 구분된 값
  • ODSlxHandleX 파사드를 통한 OpenDocument Spreadsheet

데이터베이스 및 그리드 내보내기

TDataToXLS 또는 TGridToXLS 컴포넌트를 사용하여 TDataSet 호환 데이터세트나 TDBGrid를 Excel, HTML 또는 RTF로 직접 내보낼 수 있습니다 두 컴포넌트 모두 세밀한 출력 제어를 위한 AfterCell, AfterRow, AfterTitle, AfterGroup 이벤트를 발생시키며 다단계 그룹화 필드를 지원합니다

VBA 프로젝트 보존

HotXLS는 매크로 사용 통합 문서를 왕복(round-trip) 처리할 때 VBA 프로젝트 페이로드를 보존합니다 TXLSVBAProjectTXLSVBAModule을 통해 읽기 전용 모듈 검사를 할 수 있습니다 페이로드 감지를 위해 IXLSWorkbook.HasVBAProject를 호출하고, 파일 간 전송을 위해 LoadVBAProjectFromFile / SaveVBAProjectToFile을 사용하십시오

유니코드 및 국제 텍스트

모든 문자열 처리는 유니코드 기반입니다. HotXLS는 CJK, 아랍어, 히브리어, 태국어를 비롯한 모든 언어로 작성된 Excel 파일을 올바른 양방향 텍스트와 읽기 순서 지원으로 읽고 씁니다
유니코드 문자 지원 예시

피벗 테이블 (클래식 XLS)

TXLSWorksheet.AddPivotTable을 사용하여 원본 범위에서 피벗 테이블을 만들고, 필드 배치 및 데이터 필드 숫자 형식을 구성하며, TXLSWorksheet.PivotTables를 통해 피벗 모델을 검사할 수 있습니다 필드 및 필터 세부 정보는 클래식 XLS 피벗 테이블 API를 참조하십시오

장점

No Office dependency 바이너리 수준에서 XLS 및 XLSX 파일을 직접 읽고 씁니다. Microsoft Excel 또는 Office를 설치, 라이선스 취득 또는 실행할 필요가 없습니다. 이를 통해 COM/OLE 자동화 오버헤드를 제거하고, Office 상호 운용에서 부과되는 스레딩 제한을 피하며, 데스크톱 Office 설치가 실용적이지 않은 서버 측 및 서비스 컨텍스트에서 HotXLS를 사용할 수 있습니다
High performance BIFF8 및 OOXML 파서는 핫 경로에 대한 중간 XML DOM 할당 없이 네이티브 Object Pascal로 작성되었습니다 수십만 행이 있는 대형 통합 문서를 낮은 최대 메모리로 읽고 쓸 수 있습니다. 공유 문자열 중복 제거 및 공유 수식 압축이 자동으로 적용되어 파일 크기를 작게 유지합니다
OLE migration path 클래식 파사드 API 표면(통합 문서, 워크시트, 범위, 글꼴, 테두리, 내부, 페이지 설정)은 OLE 자동화에서 익숙한 Excel 개체 모델을 거울처럼 반영합니다. 이를 통해 기존 OLE 기반 프로젝트의 마이그레이션이 간단합니다: COM 호출을 HotXLS 호출로 교체하고, Office 종속성을 제거하여 네이티브 성능을 얻을 수 있습니다
Dual-facade design 레거시 XLS 코드는 lxHandle에 대해 변경 없이 컴파일되고 실행되는 반면, 새 XLSX 코드는 더 풍부한 lxHandleX 파사드를 사용합니다 한 번에 하나의 파일 형식을 마이그레이션하는 것은 안전하고 점진적으로 수행됩니다
Formula engine included 내장 다중 패스 계산 엔진은 Excel이 열기 시 재계산할 필요 없이 가장 일반적인 워크시트 함수를 처리합니다 사용자 정의 함수는 OnUserFunction 콜백을 통해 처리됩니다
Easy to use 드롭인 Delphi 컴포넌트(TDataToXLS, TGridToXLS)는 일반적인 내보내기 작업에 코드가 필요하지 않습니다. 유연한 범위 API는 A1 표기법, R1C1 표기법 및 0 기반 행/열 인덱싱을 지원합니다
Thread-safe file I/O 공유 Office 프로세스가 없기 때문에 여러 TXLSXWorkbook 인스턴스를 동기화 없이 독립 스레드에서 동시에 생성하고 저장할 수 있어 HotXLS를 다중 스레드 보고서 생성 서버에 적합하게 합니다

호환성

HotXLS는 다음 RAD Studio 버전과 호환됩니다:
Delphi XE5, XE6, XE7, XE8, 10 Seattle, 10.1 Berlin, 10.2 Tokyo, 10.3 Rio, 10.4 Sydney, 11 Alexandria, 12 Athens, 13 Florence
C++Builder XE5, XE6, XE7, XE8, 10 Seattle, 10.1 Berlin, 10.2 Tokyo, 10.3 Rio, 10.4 Sydney, 11 Alexandria, 12 Athens, 13 Florence
Target platforms Windows 32비트 및 64비트
Excel file formats XLS (BIFF8, Excel 97–2003), XLSX (OOXML, Excel 2007+), ODS (OpenDocument 1.2)
Export-only formats HTML, RTF, CSV, TSV

참조