HotXLS 문서

TXLSXRange 클래스

유닛: lxHandleX
TXLSXWorksheet.Range, RCRange, UsedRange, EntireRow 또는 EntireColumn에 의해 반환되는 직사각형 XLSX 워크시트 범위를 나타냅니다. 범위는 워크시트에 대한 경량 뷰이며 셀 데이터를 소유하지 않습니다

Declaration

TXLSXBuiltinCellStyle = (
  xbsNormal, xbsGood, xbsBad, xbsNeutral,
  xbsCalculation, xbsCheckCell, xbsExplanatoryText, xbsInput,
  xbsLinkedCell, xbsNote, xbsOutput, xbsWarningText,
  xbsHeading1, xbsHeading2, xbsHeading3, xbsHeading4, xbsTitle, xbsTotal,
  xbsAccent1, xbsAccent2, xbsAccent3, xbsAccent4, xbsAccent5, xbsAccent6);

TXLSXRange = class
  constructor Create(ASheet: TXLSXWorksheet; ARow1, ACol1, ARow2, ACol2: Integer);
  function RefA1: WideString;
  function SaveAsHTML(const FileName: WideString): Integer; overload;
  function SaveAsHTML(const FileName: WideString; Options: TXLSXHtmlExportOptions): Integer; overload;
  function SaveAsHTML(Stream: TStream): Integer; overload;
  function SaveAsHTML(Stream: TStream; Options: TXLSXHtmlExportOptions): Integer; overload;

  property Sheet: TXLSXWorksheet;
  property Row1, Col1, Row2, Col2: Integer;
  property RowCount, ColCount: Integer;

  procedure SetValue(const V: Variant);
  procedure SetFormula(const F: WideString);
  function SetArrayFormula(const F: WideString): Integer;
  procedure ClearValues;
  procedure Clear;
  procedure ClearAll;

  procedure SetFontIndex(AIdx: Integer);
  procedure SetFillIndex(AIdx: Integer);
  procedure SetBorderIndex(AIdx: Integer);
  procedure SetNumberFormatIndex(AIdx: Integer);
  procedure SetAlignmentIndex(AIdx: Integer);
  procedure SetNumberFormat(const Fmt: WideString);
  procedure SetBorders(Kind: TXLSXBorderEdgeKind; Style: TXLSXBorderStyle); overload;
  procedure SetBorders(Kind: TXLSXBorderEdgeKind; Style: TXLSXBorderStyle; Color: LongWord); overload;
  procedure SetLocked(ALocked: Boolean);
  procedure SetFormulaHidden(AHidden: Boolean);

  procedure AutoFitColumns(AMinWidth: Double = 0; AMaxWidth: Double = 0);
  procedure AutoFitRows(AMinHeight: Double = 0; AMaxHeight: Double = 0);
  procedure Merge; overload;
  procedure Merge(Across: OleVariant); overload;
  procedure Unmerge;
  function Offset(DRow, DCol: Integer): TXLSXRange;
  function Resize(NewRowCount, NewColCount: Integer): TXLSXRange;
  procedure Sort(AKeyColumn: Integer; ADescending: Boolean = False); overload;
  procedure Sort(const AKeyColumns: array of Integer; const ADescending: array of Boolean); overload;
  procedure ApplyBuiltinStyle(AStyle: TXLSXBuiltinCellStyle);
  procedure CopyTo(ADestRow, ADestCol: Integer);
  procedure MoveTo(ADestRow, ADestCol: Integer);
  procedure InsertRows;
  procedure DeleteRows;
  procedure InsertCols;
  procedure DeleteCols;
  procedure ApplyFormatPatch(ASource: TXLSXRange; AParts: TXLSXFormatParts);
  function CopyToClipboard: Boolean;
  function SaveAsPDF(const FileName: WideString): Integer; overload;
  function SaveAsPDF(Stream: TStream): Integer; overload;
  function SetDynamicArrayFormula(const F: WideString): Integer;
end;

Members

Member Description
Create(ASheet, ARow1, ACol1, ARow2, ACol2) 워크시트가 소유하는 새 범위를 만들면서 뒤집힌 모서리를 정규화해 Row1/Col1이(가) 항상 왼쪽 위 좌표가 되도록 합니다
RefA1 범위 참조를 A1 텍스트로 반환합니다. 단일 셀 범위는 B2 같은 단일 셀 참조를 반환합니다
SaveAsHTML 옵션 오버로드는 TXLSXHtmlExportOptions로 Title, WriteDocument, IncludeStyles, IncludeBOM, TableClass를 지정할 수 있습니다. 표 조각만 내보내려면 WriteDocument를 False로, 기존 UTF-8 응답에 출력을 끼워 넣으려면 IncludeBOM을 False로 설정합니다. 선택 범위 HTML 내보내기에도 같은 옵션을 쓸 수 있습니다. 내보낸 출력은 셀 하이퍼링크를 <a> 앵커로, 고정 이미지는 인라인 data: URI로 유지합니다. 선택 사각형 안에 들어오는 이미지 URI를 그대로 내보냅니다. 선택 사각형 안의 셀 메모도 이스케이프된 <td> title 속성 형태로 함께 출력됩니다. IncludeStyles가 켜져 있으면 명시적인 ColWidth 값은 <col> 폭으로, 명시적인 RowHeight 값은 <tr> 높이 스타일로 출력됩니다. 리치 텍스트 셀 룬(runs)은 인라인 글꼴, 색, 강조, 밑줄 스타일을 갖춘 이스케이프된 <span> 요소로 출력되며, 이 역시 IncludeStyles가 켜져 있을 때 적용됩니다. 셀 테두리는 IncludeStyles가 켜져 있을 때 CSS border-left, border-right, border-top, border-bottom 규칙으로 출력됩니다. RowHidden / ColHidden으로 표시된 숨겨진 행과 열, 그리고 명시적인 폭 0 열은 생성된 표와 <colgroup>에서 건너뛰어집니다. 세로 맞춤 설정은 IncludeStyles가 켜져 있을 때 CSS vertical-align 규칙으로 출력됩니다
SetValue / SetFormula 워크시트 셀 컬렉션을 통해 범위의 모든 셀에 같은 값 또는 수식 텍스트를 씁니다
SetArrayFormula 범위에 다중 셀 CSE 배열 수식을 설정합니다. 왼쪽 위 셀이 수식 텍스트를 저장하고 확산 범위(spill range)의 기준이 되며, 나머지 셀은 그 루트를 가리켜 각 셀이 행렬 결과 중 자신의 요소를 평가합니다. 수식 텍스트는 중괄호 없이 전달하세요
ClearValues / Clear / ClearAll ClearValues and Clear remove values and formulas while preserving style indexes. ClearAll also clears style indexes
SetFontIndex / SetFillIndex / SetBorderIndex / SetNumberFormatIndex / SetAlignmentIndex 범위의 각 셀에 1 기반 통합 문서 팔레트 인덱스를 적용합니다. 해당 셀별 인덱스를 지우려면 0을 전달하세요
SetNumberFormat 통합 문서 팔레트에서 숫자 서식 문자열을 찾거나 추가한 뒤, 그 결과인 1 기반 인덱스를 범위에 적용합니다. 빈 서식은 셀별 인덱스를 지웁니다
SetBorders Composes border edges over the range. TXLSXBorderEdgeKind accepts xlsxEdgeAll, xlsxEdgeOutline, xlsxEdgeInside, xlsxEdgeInsideHorizontal, xlsxEdgeInsideVertical, xlsxEdgeTop, xlsxEdgeBottom, xlsxEdgeLeft, xlsxEdgeRight, xlsxEdgeDiagonalUp, and xlsxEdgeDiagonalDown. 윤곽 및 내부 변 선택자를 사용해 무관한 변 설정을 바꾸지 않고 표 테두리를 구성하세요
SetLocked / SetFormulaHidden 통합 문서 보호 스타일 풀을 재사용해 범위의 모든 셀에 셀 보호 플래그를 적용합니다
AutoFitColumns / AutoFitRows 범위의 열 또는 행 경계를 따라 워크시트 자동 맞춤 도우미로 전달합니다. 선택적인 폭/높이 제한도 그대로 전달되어 보고서 레이아웃이 설계 경계 안에 머물도록 합니다
Merge / Unmerge Merge와 Merge(False)는 하나의 병합 사각형을 만듭니다. Merge(True)는 행마다 하나의 병합 범위를 만들어 Excel의 merge-across 동작과 같아집니다. Unmerge는 정확히 일치하는 병합 범위를 제거합니다
Offset / Resize 현재 경계에서 옮겨지거나 요청한 행 및 열 개수로 크기가 조정되는, 워크시트가 소유하는 다른 범위를 반환합니다
Sort 이 범위 안의 행을 키 열 하나로 또는 우선순위 순서대로 여러 키 열로 정렬합니다. ADescending 키마다 오름차순 또는 내림차순을 선택합니다; 생략된 항목은 오름차순이 기본입니다. 빈 값은 마지막에 정렬됩니다
ApplyBuiltinStyle Excel 기본 제공 셀 스타일의 보이는 모양을 범위의 모든 셀에 적용합니다. 이 도우미는 일치하는 글꼴과 채우기를 통합 문서 풀에 추가하고 그 결과 인덱스를 셀에 할당하는 방식으로 직접 서식을 기록합니다
CopyTo / MoveTo 범위 전체를 대상 왼쪽 위 셀로 복사하거나 이동합니다. 값, 수식, 리치 텍스트 페이로드, 스타일 인덱스, 메모, 하이퍼링크, 드로잉 앵커는 워크시트의 범위 복사·이동 도우미를 통해 전달됩니다
InsertRows / DeleteRows / InsertCols / DeleteCols 범위 경계를 따라 행 전체 또는 열 전체 삽입과 삭제를 수행합니다. 이 도우미들은 워크시트의 행/열 이동 연산으로 전달되므로 수식, 참조, 필터, 페이지 설정 범위, 차트 범위, 이름, 이미지, 차트 앵커가 편집된 그리드와 계속 맞춰집니다
ApplyFormatPatch TXLSXFormatParts 플래그를 사용해 다른 소스 범위에서 이 범위로 선택적인 서식 스타일을 적용합니다
CopyToClipboard Copies the range values and styles to the Windows clipboard
SaveAsPDF 프로세스 내 PDF 렌더링 엔진을 사용해 셀 범위를 PDF 파일이나 스트림으로 내보냅니다
SetDynamicArrayFormula 범위에 동적 배열 수식을 설정하며, Excel의 동적 확산(spill) 동작을 지원합니다

Ownership and bounds

범위는 범위를 생성한 워크시트가 소유하며 해당 워크시과 함께 해제됩니다. 애플리케이션 코드는 TXLSXRange에서 Free를 호출해서는 안 되며, 워크시트 또는 통합 문서가 소멸된 후 범위 참조를 유지해서는 안 됩니다
숫자 좌표는 1부터 시작합니다. 범위를 생성하면 반전된 모서리가 정규화되고 경계가 XLSX 워크시트 제한에 맞춰 고정됩니다

예제

var
  Wb: TXLSXWorkbook;
  Ws: TXLSXWorksheet;
  Body: TXLSXRange;
begin
  Wb := TXLSXWorkbook.Create;
  try
    Ws := Wb.Sheets.Add('Report');
    Body := Ws.Range['B2:D20'];
    Body.SetNumberFormat('#,##0.00');
    Body.SetBorders(xlsxEdgeOutline, xlsxBorderThin, $FF808080);
    Body.Sort(2);
    Body.ApplyBuiltinStyle(xbsAccent1);
    Ws.Range['F2:G3'].SetArrayFormula('MMULT(A2:B3,D2:E3)');
    Body.AutoFitColumns;
    Body.SaveAsHTML('report-fragment.html');
  finally
    Wb.Free;
  end;
end;

참고