Documentación HotXLS

Clase TXLSXRange

Unidad: lxHandleX
Representa un rango de hoja de cálculo XLSX rectangular devuelto por TXLSXWorksheet.Range, RCRange, UsedRange, EntireRow o EntireColumn. Un rango es una vista ligera sobre su hoja de cálculo; no posee los datos de las celdas

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) Construye un rango propiedad de la hoja de cálculo y normaliza las esquinas invertidas para que Row1/Col1 sean siempre la coordenada superior izquierda
RefA1 Devuelve la referencia del rango como texto A1. Los rangos de una sola celda devuelven una referencia de celda única como B2
SaveAsHTML Las sobrecargas con opciones aceptan TXLSXHtmlExportOptions con Title, WriteDocument, IncludeStyles, IncludeBOM y TableClass. Fije WriteDocument en False para un fragmento de tabla; fije IncludeBOM en 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> y las imágenes ancladas como data: en línea. URI de imagen cuando caen dentro del rectángulo seleccionado. Los comentarios de celda dentro del rectángulo seleccionado también se emiten con escape como atributos <td> title. Cuando IncludeStyles está activado, los valores explícitos de ColWidth se emiten como anchos <col> y los valores explícitos de RowHeight como estilos de altura <tr>. Las corridas de celda con texto enriquecido se emiten como elementos <span> con escape y estilos en línea de fuente, color, énfasis y subrayado, también cuando IncludeStyles está activado. Los bordes de celda se emiten como reglas CSS border-left, border-right, border-top y border-bottom cuando IncludeStyles está activado. Las filas y columnas ocultas marcadas con RowHidden / ColHidden, más las columnas de ancho cero explícito, se omiten en la tabla generada y en <colgroup>. La alineación vertical se emite como reglas CSS vertical-align cuando IncludeStyles está activado
SetValue / SetFormula Escribe el mismo valor o texto de fórmula en todas las celdas 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 desbordamiento, mientras que las demás celdas apuntan a esa raíz, de modo que cada celda evalúa su propio elemento del resultado matricial. Pasa 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 índices de la paleta del libro de trabajo (basados en uno) a cada celda del rango. Pasa 0 para borrar el índice por celda correspondiente
SetNumberFormat Busca o añade una cadena de formato numérico en la paleta del libro de trabajo y después aplica el índice resultante (basado en uno) al rango. Un formato vacío borra 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. Usa los selectores de bordes exteriores e interiores para construir bordes de tabla sin reemplazar los ajustes de bordes no relacionados
SetLocked / SetFormulaHidden Aplica marcas de protección de celda a todas las celdas del rango reutilizando el pool de estilos de protección del libro de trabajo
AutoFitColumns / AutoFitRows Reenvía a los ayudantes de autoajuste de la hoja de cálculo sobre los límites de columna o fila del rango. Los límites opcionales de anchura y altura se pasan tal cual para mantener los diseños de los informes dentro de las medidas de diseño
Merge / Unmerge Merge y Merge(False) crean un rectángulo combinado. Merge(True) crea un rango combinado por fila, equivalente al comportamiento de combinación a lo ancho de Excel. Unmerge elimina la coincidencia exacta de un rango combinado
Offset / Resize Devuelve otro rango propiedad de la hoja de cálculo, desplazado desde los límites actuales o redimensionado al número de filas y columnas solicitado
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 adoptan por defecto el orden ascendente. Los valores en blanco se ordenan al final
ApplyBuiltinStyle Aplica la apariencia visible de un estilo de celda integrado de Excel a todas las celdas del rango. El ayudante escribe formato directo añadiendo la fuente y el relleno correspondientes a los pools del libro de trabajo y asignando los índices resultantes a las celdas
CopyTo / MoveTo Copia o mueve el rango completo a una celda de destino superior izquierda. Los valores, las fórmulas, las cargas de texto enriquecido, los índices de estilo, los comentarios, los hipervínculos y los anclajes de dibujo se reenvían a través de los ayudantes 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 enteras sobre los límites del rango. Estos ayudantes reenvían a las operaciones de desplazamiento de filas/columnas de la hoja de cálculo, de forma 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 se mantienen alineados con la cuadrícula editada
ApplyFormatPatch Aplica estilos de formato selectivos de otro rango de origen a este rango usando las marcas 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 desbordamiento dinámico (spill) de Excel

Ownership and bounds

Los rangos son propiedad de la hoja de cálculo que los creó y se liberan con esa hoja de cálculo El código de la aplicación no debe llamar a Free on a TXLSXRange y no debería 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 están basadas en uno. La creación de rangos normaliza las esquinas invertidas y limita los bordes a los límites 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