Documentación HotXLS

TXLSXRange class

Unidad: lxHandleX
Representa a rectangular XLSX worksheet range returned by TXLSXWorksheet.Range, RCRange, UsedRange, EntireRow, or EntireColumn. A range is a lightweight view over its worksheet; it does not own cell data

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) Builds a new worksheet-owned range and normalizes reversed corners so Row1/Col1 are always the upper-left coordinate
RefA1 Devuelve the range reference as A1 text. Single-cell ranges return a single cell reference such as B2
SaveAsHTML Options overloads accept TXLSXHtmlExportOptions for Title, WriteDocument, IncludeStyles, IncludeBOM, and TableClass. Set WriteDocument to False for a table fragment; set IncludeBOM to False al incrustar la salida en una respuesta UTF-8 existente. Las mismas opciones están disponibles para la exportación HTML del rango seleccionado. La salida exportada conserva los hipervínculos de celda como <a> anchors and anchored images as inline data: las URI de las imágenes cuando quedan dentro del rectángulo seleccionado. Los comentarios de celda que quedan dentro del rectángulo seleccionado también se emiten como <td> title attributes. When IncludeStyles is enabled, explicit ColWidth values are emitted as <col> widths and explicit RowHeight values as <tr> height styles. Rich-text cell runs are emitted as escaped <span> elements with inline font, color, emphasis, and underline styles when IncludeStyles is enabled. Cell borders are emitted as CSS border-left, border-right, border-top, and border-bottom rules when IncludeStyles is enabled. Hidden rows and columns marked by RowHidden / ColHidden, plus explicit zero-width columns, are skipped in the generated table and <colgroup>. Vertical alignment settings are emitted as CSS vertical-align rules when IncludeStyles is enabled
SetValue / SetFormula Escribe el mismo valor o texto de fórmula en cada celda del rango a través de la colección de celdas de la hoja de cálculo
SetArrayFormula Establece una fórmula de matriz CSE de varias celdas sobre el rango. La celda superior izquierda almacena el texto de la fórmula y ancla el rango de derrame, mientras que las demás celdas apuntan a esa raíz, de modo que cada celda evalúa su propio elemento del resultado matricial. Pase el texto de la fórmula sin las llaves que la rodean
ClearValues / Clear / ClearAll ClearValues and Clear remove values and formulas while preserving style indexes. ClearAll also clears style indexes
SetFontIndex / SetFillIndex / SetBorderIndex / SetNumberFormatIndex / SetAlignmentIndex Aplica a cada celda del rango índices de base 1 de la paleta del libro de trabajo. Pase 0 para limpiar el índice por celda correspondiente
SetNumberFormat Busca o agrega una cadena de formato de número en la paleta del libro de trabajo y después aplica al rango el índice de base 1 resultante. Un formato vacío limpia el índice por celda
SetBorders Composes border edges over the range. TXLSXBorderEdgeKind accepts xlsxEdgeAll, xlsxEdgeOutline, xlsxEdgeInside, xlsxEdgeInsideHorizontal, xlsxEdgeInsideVertical, xlsxEdgeTop, xlsxEdgeBottom, xlsxEdgeLeft, xlsxEdgeRight, xlsxEdgeDiagonalUp, and xlsxEdgeDiagonalDown. Use los selectores de borde exterior e interior para construir bordes de tabla sin reemplazar la configuración de bordes no relacionada
SetLocked / SetFormulaHidden Aplica los indicadores de protección de celda a cada celda del rango reutilizando el grupo de estilos de protección del libro de trabajo
AutoFitColumns / AutoFitRows Reenvía a las funciones auxiliares de autoajuste de la hoja de cálculo sobre los límites de columna o fila del rango. Los límites opcionales de ancho y alto se pasan tal cual para mantener los diseños de informe dentro de las dimensiones previstas
Merge / Unmerge Merge and Merge(False) create one merged rectangle. Merge(True) creates one merged range per row, matching Excel's merge-across behavior. Unmerge removes an exact merged-range match
Offset / Resize Devuelve another worksheet-owned range shifted from the current bounds or resized to the requested row and column count
Sort Ordena las filas dentro de este rango por una columna clave o por varias columnas clave en orden de prioridad ADescending selecciona el orden ascendente o descendente por clave; las entradas omitidas usan el orden ascendente de forma predeterminada. Los valores en blanco se ordenan al final
ApplyBuiltinStyle Aplica la apariencia visible de un estilo de celda integrado de Excel a cada celda del rango. La función auxiliar escribe formato directo agregando la fuente y el relleno correspondientes a los grupos del libro de trabajo y asignando a las celdas los índices resultantes
CopyTo / MoveTo Copia o mueve el rango completo a una celda superior izquierda de destino. Los valores, las fórmulas, los contenidos de texto enriquecido, los índices de estilo, los comentarios, los hipervínculos y los anclajes de dibujo se reenvían a través de las funciones auxiliares de copia y movimiento de rangos de la hoja de cálculo
InsertRows / DeleteRows / InsertCols / DeleteCols Realiza inserción y eliminación de filas o columnas completas sobre los límites del rango. Estas funciones auxiliares reenvían a las operaciones de desplazamiento de filas/columnas de la hoja de cálculo, de modo que las fórmulas, las referencias, los filtros, los rangos de configuración de página, los rangos de gráficos, los nombres, las imágenes y los anclajes de gráficos permanezcan alineados con la cuadrícula editada
ApplyFormatPatch Aplica a este rango estilos de formato selectivos tomados de otro rango de origen usando los indicadores TXLSXFormatParts
CopyToClipboard Copies the range values and styles to the Windows clipboard
SaveAsPDF Exporta el rango de celdas como archivo o flujo PDF usando el motor de renderizado PDF en proceso
SetDynamicArrayFormula Establece una fórmula de matriz dinámica sobre el rango, con soporte para el comportamiento de derrame dinámico (spill) de Excel

Ownership and bounds

Los rangos pertenecen a la hoja de cálculo que los creó y se liberan con esa hoja El código de la aplicación no debe llamar Free on a TXLSXRange y no debe conservar una referencia al rango después de que la hoja de cálculo o el libro de trabajo se destruyan
Las coordenadas numéricas son de base 1. La creación de rangos normaliza las esquinas invertidas y ajusta los límites a los de la hoja de cálculo XLSX

Ejemplo

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;

Véase también