Documentação HotXLS

TXLSXRange class

Unidade: 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 Retorna 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 ao incorporar a saída em uma resposta UTF-8 existente. As mesmas opções estão disponíveis para a exportação HTML do intervalo selecionado. A saída exportada preserva os hiperlinks de célula como <a> anchors and anchored images as inline data: URIs de imagem quando elas estão dentro do retângulo selecionado. Comentários de célula dentro do retângulo selecionado também são emitidos como escapados <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 Grava o mesmo valor ou texto de fórmula em todas as células do intervalo por meio da coleção de células da planilha
SetArrayFormula Define uma fórmula de array CSE de múltiplas células sobre o intervalo. A célula do canto superior esquerdo armazena o texto da fórmula e ancora o intervalo de spill, enquanto as demais células apontam de volta para essa raiz, de modo que cada célula avalie o seu próprio elemento do resultado matricial. Passe o texto da fórmula sem as chaves
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 da paleta da pasta de trabalho, baseados em 1, a cada célula do intervalo. Passe 0 para limpar o índice por célula correspondente
SetNumberFormat Localiza ou acrescenta uma string de formato de número na paleta da pasta de trabalho e aplica ao intervalo o índice resultante, baseado em 1. Um formato vazio limpa o índice por célula
SetBorders Composes border edges over the range. TXLSXBorderEdgeKind accepts xlsxEdgeAll, xlsxEdgeOutline, xlsxEdgeInside, xlsxEdgeInsideHorizontal, xlsxEdgeInsideVertical, xlsxEdgeTop, xlsxEdgeBottom, xlsxEdgeLeft, xlsxEdgeRight, xlsxEdgeDiagonalUp, and xlsxEdgeDiagonalDown. Use os seletores de borda de contorno e de borda interna para construir bordas de tabela sem substituir configurações de borda não relacionadas
SetLocked / SetFormulaHidden Aplica flags de proteção de célula a todas as células do intervalo reutilizando o pool de estilos de proteção da pasta de trabalho
AutoFitColumns / AutoFitRows Repassa para os helpers de auto-ajuste da planilha as operações sobre os limites de coluna ou de linha do intervalo. Limites opcionais de largura e altura são passados adiante para manter os layouts de relatório dentro dos limites de design
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 Retorna another worksheet-owned range shifted from the current bounds or resized to the requested row and column count
Sort Ordena as linhas dentro deste intervalo por uma coluna-chave ou por várias colunas-chave em ordem de prioridade. ADescending seleciona ordem crescente ou decrescente por chave; entradas omitidas assumem a ordem crescente por padrão. Valores em branco ficam por último
ApplyBuiltinStyle Aplica a aparência visível de um estilo de célula interno do Excel a todas as células do intervalo. O helper grava a formatação direta adicionando a fonte e o preenchimento correspondentes aos pools da pasta de trabalho e atribuindo os índices resultantes às células
CopyTo / MoveTo Copia ou move o intervalo inteiro para uma célula de destino no canto superior esquerdo. Valores, fórmulas, payloads de rich text, índices de estilo, comentários, hiperlinks e âncoras de desenho são repassados pelos helpers de cópia e de movimentação de intervalo da planilha
InsertRows / DeleteRows / InsertCols / DeleteCols Executa inserção e exclusão de linhas ou colunas inteiras sobre os limites do intervalo. Esses helpers repassam as operações de deslocamento de linha/coluna da planilha, de modo que fórmulas, referências, filtros, intervalos de configuração de página, intervalos de gráfico, nomes, imagens e âncoras de gráfico permaneçam alinhados à grade editada
ApplyFormatPatch Aplica estilos de formatação seletiva de outro intervalo de origem a este intervalo usando as flags de TXLSXFormatParts
CopyToClipboard Copies the range values and styles to the Windows clipboard
SaveAsPDF Exporta o intervalo de células como um arquivo ou stream PDF usando o engine de renderização de PDF in-process
SetDynamicArrayFormula Define uma fórmula de array dinâmico sobre o intervalo, com suporte ao comportamento de spill dinâmico do Excel

Ownership and bounds

Os intervalos pertencem à planilha que os criou e são liberados junto com ela O código da aplicação não deve chamar Free on a TXLSXRange e não deve manter uma referência de intervalo depois que a planilha ou a pasta de trabalho for destruída
As coordenadas numéricas são baseadas em 1. A criação de intervalos normaliza cantos invertidos e limita as extremidades aos limites da planilha XLSX

Exemplo

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;

Consulte também