유닛: 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;
참고