Documentação do HotXLS

Membros de API adicionais da fachada XLSX

Esta página abrange membros de API públicos mais pequenos declarados por lxHandleX, incluindo opções de exportação HTML e funções auxiliares para chamadores que trabalham directamente com referências de células XLSX ou texto de payload XML

Limite de memória de matrizes de fórmulas

property FormulaArrayMemoryLimit: Int64;
      
Limita o payload alocado por matrizes de fórmulas geradas, como MUNIT, assume 64 MiB por predefinição, aplica-se aos workers de recálculo paralelo e limita valores abaixo de um elemento Double element

Opções de exportação HTML

type
  TXLSXHtmlExportOptions = class
    constructor Create;
    property Title: WideString;
    property WriteDocument: Boolean;
    property IncludeStyles: Boolean;
    property IncludeBOM: Boolean;
    property TableClass: WideString;
  end;
      
TitleSets the document title when WriteDocument Define o título do documento quando WriteDocument é True
WriteDocumentQuando True, escreve um documento HTML completo. Quando False, escreve apenas o fragmento da tabela
IncludeStylesControla se o HTML exportado inclui CSS gerado e informação de estilo inline
IncludeBOMControla se a saída para ficheiro e Stream começa com um BOM UTF-8
TableClassAdiciona um nome de classe CSS ao elemento <table> gerado <table> element

Funções auxiliares de referência XLSX

function XlsxColumnLabel(Col: Integer): WideString;
function XlsxCellRef(Row, Col: Integer): WideString;
function XlsxColumnIndex(const ColumnLabel: WideString): Integer;
function XlsxParseCellRef(const Ref: WideString; out Row, Col: Integer): Boolean;
function XlsxParseRangeRef(const Ref: WideString; out Row1, Col1, Row2, Col2: Integer): Boolean;
      
XlsxColumnLabelConverte um índice de coluna baseado em 1 para um rótulo de coluna em estilo A1 como A, Z ou AA A, Z, or AA
XlsxCellRefConstrói uma referência de célula em estilo A1 a partir de números de linha e coluna baseados em 1
XlsxColumnIndexConverts an A1-style coluna label to a 1-based coluna index
XlsxParseCellRefAnalisa uma única referência de célula em estilo A1 e devolve linha e coluna
XlsxParseRangeRefAnalisa um intervalo retangular em estilo A1 e devolve limites inclusivos baseados em 1

Funções auxiliares de escape XML XLSX

function XlsxEscapeText(const Value: WideString): WideString;
function XlsxEscapeAttr(const Value: WideString): WideString;
      
XlsxEscapeText escapa o conteúdo de nós de texto XML, enquanto XlsxEscapeAttr escapa os valores de atributos XML e preserva os espaços em branco de atributos que o Excel tem de ler de volta exactamente

Tipos de suporte para membros XLSX avançados

Os membros XLSX avançados documentados neste ficheiro de ajuda recebem e devolvem os seguintes tipos simples, declarados em lxHandleX

{ Find and replace }
TXLSXFindFlag = (lxfMatchCase, lxfWholeCell, lxfSearchFormulas,
  lxfUseWildcards, lxfBackward, lxfByColumns);
TXLSXFindOptions = set of TXLSXFindFlag;
TXLSXReplaceAction = (raReplace, raSkip, raAbort);
TXLSXReplaceEvent = function(ARow, ACol: Integer;
  const ACurrentText: WideString; var ANewText: WideString):
  TXLSXReplaceAction of object;

{ Progress and recalculation policy }
TXLSXProgressPhase = (xlsxProgressReading, xlsxProgressWriting,
  xlsxProgressCalculating, xlsxProgressExporting);
TXLSXProgressState = (ppsBegin, ppsWork, ppsEnd);
TXLSXRecalcMode = (xrmManual, xrmIfDirty, xrmAlways);
TXLSXPasswordEvent = procedure(Sender: TObject;
  var PassWord: WideString) of object;

{ Custom document properties (docProps/custom.xml) }
TXLSXCustomPropType = (xcptText, xcptNumber, xcptDate, xcptBoolean);
TXLSXCustomProperty = class
  Name: WideString;
  PropType: TXLSXCustomPropType;
{ + TextValue, NumberValue, DateValue, BoolValue accessors }
end;

{ Table styles, fills, sorts, external links, controls, sparklines }
TXLSXTableStyleSectionKind = (xltssWholeTable, xltssHeaderRow,
  xltssTotalRow, xltssFirstColumn, xltssLastColumn, xltssFirstRowStripe,
  xltssSecondRowStripe, xltssFirstColumnStripe, xltssSecondColumnStripe,
  xltssFirstHeaderCell, xltssLastHeaderCell, xltssFirstTotalCell,
  xltssLastTotalCell { + subtotal and subheading slots });
TXLSXFillPattern = (xlsxFillNone, xlsxFillSolid, xlsxFillGray125
  { + the remaining ECMA-376 pattern values });
TXLSXGradientKind = (xlsxGradientNone, xlsxGradientLinear, xlsxGradientPath);
TXLSXSortBy = (xlsxBsValue, xlsxBsCellColor, xlsxBsFontColor, xlsxBsIcon);
TXLSXSortMethod = (xlsxSmNone, xlsxSmStroke, xlsxSmPinYin);
TXLSXExternalLinkKind = (xlsxExternalLinkUnknown, xlsxExternalLinkWorkbook,
  xlsxExternalLinkDde { + the remaining link kinds });
TXLSXFormControlType = (xfcButton, xfcCheckBox, xfcRadioButton, xfcComboBox,
  xfcListBox);
TXLSXSparklineAxisType = (xlsxSparklineAxisIndividual,
  xlsxSparklineAxisGroup, xlsxSparklineAxisCustom);
TXLSXSparklineEmptyCells = (xlsxSparklineEmptyGap, xlsxSparklineEmptyZero,
  xlsxSparklineEmptySpan);

{ Chart authoring and layout }
TXLSXChartBarGrouping = (xlsxBarGroupClustered, xlsxBarGroupStacked,
  xlsxBarGroupPercentStacked);
TXLSXChartMarkerSymbol = (xlsxMarkerAuto, xlsxMarkerCircle, xlsxMarkerDash,
  xlsxMarkerDiamond, xlsxMarkerDot, xlsxMarkerPlus, xlsxMarkerSquare,
  xlsxMarkerStar, xlsxMarkerTriangle, xlsxMarkerX, xlsxMarkerNone);
TXLSXChartDataLabelPos = (xlsxDlblPosDefault, xlsxDlblPosCenter,
  xlsxDlblPosInEnd, xlsxDlblPosOutEnd, xlsxDlblPosBestFit, xlsxDlblPosLeft,
  xlsxDlblPosRight, xlsxDlblPosTop, xlsxDlblPosBottom);
TXLSXChartMutable = class;     { mutable base of the chart model nodes }
TXLSXChartLayoutRect = record
  Left, Top, Right, Bottom: Double;
end;
TXLSXChartResolvedLayout = record
  ChartRect: TXLSXChartLayoutRect;
  TitleRect: TXLSXChartLayoutRect;
  LegendRect: TXLSXChartLayoutRect;
  PlotOuterRect: TXLSXChartLayoutRect;
  PlotInnerRect: TXLSXChartLayoutRect;
  { + per-axis title rectangles and visibility flags }
end;

{ Pagination keep-together blocks }
TXLSXKeepTogetherRange = record
  Row1, Row2: Integer;
  Level: Integer;
  ReplaceBiggerLevels: Boolean;
end;
TXLSXKeepTogetherCols = record
  Col1, Col2: Integer;
  Level: Integer;
  ReplaceBiggerLevels: Boolean;
end;

{ Diagnostics records }
TXLSXValidationIssue = record
  Row, Col: Integer;
  ValidationIndex: Integer;
  Reason: WideString;
end;
TXLSXUnknownFunctionInfo = record
  Sheet: Integer;
  Row, Col: Integer;
  Name: WideString;
  LocationKind: TXLSFormulaSymbolLocationKind;
  DefinedNameIndex: Integer;
  DefinedName: WideString;
end;
TXLSXRowMajorOrder = record
  CellOrder: array of Integer;
  RowStarts: array of Integer;
  MaxRow: Integer;
end;
      
Find and replaceTXLSXWorksheet.FindText / FindTextIn aceitam TXLSXFindOptions (diferenciar maiúsculas, célula inteira, procurar fórmulas, wildcards, para trás, por colunas) e ReplaceText recebe uma TXLSXReplaceEvent cujo resultado seleciona raReplace, raSkipou raAbort por correspondência, com um ANewText gravável para substituições por célula
Progress and savingTXLSXWorkbook.OnProgress / OnProgressEx entregam TXLSXProgressPhase e (na forma estendida) TXLSXProgressState com um sinalizador Abort ; RecalcBeforeSave é um TXLSXRecalcMode que seleciona recálculo manual, só de sujos ou sempre antes da serialização; OnPassword é uma TXLSXPasswordEvent que fornece palavras-passe de abertura e de escrita
Custom propertiesTXLSXWorkbook.CustomProperties é uma coleção TXLSXCustomProperties com criadores tipados AddText / AddNumber / AddDate / AddBoolean , FindByName, Deletee Clear, mais a enumeração Count e Items ; cada TXLSXCustomProperty etiqueta o seu valor com um TXLSXCustomPropType compatível com o mapeamento de variantes do ECMA-376
Style overlaysTXLSXStyleOverlays gere substituições por intervalo sobre os estilos armazenados: Add cria uma, ApplyToCell restiliza uma única célula, Resolve, ResolveRowDefaulte ResolveColumnDefault respondem a consultas de estilo durante o carregamento, HasVirtualStyle reporta estilos gerados, MaxVirtualRow limita as linhas virtuais, ApplyStructuralEdit desloca as sobreposições após edições de linhas ou colunas, e Clear, Counte Items mantêm a coleção
Styles, fills, and overlaysTXLSXFill expõe Pattern, GradientKinde GradientStops através de TXLSXFillPattern, TXLSXGradientKinde TXLSXGradientStop; TXLSXWorksheet.StyleOverlays é uma coleção TXLSXStyleOverlays cujas entradas TXLSXStyleOverlay transportam um retângulo, as partes de formato afetadas e o estilo de célula de substituição
Tables, sorts, and linksOs estilos de tabela personalizados (TXLSXWorkbook.CustomTableStyles) constroem a formatação de seções a partir de slots TXLSXTableStyleSectionKind : a coleção oferece Add, FindByName, Delete, Clear, Counte Items, enquanto cada TXLSXCustomTableStyle expõe Name, SectionSize, PivotStylee TableStyleFlag e responde a consultas HasSection / ResolveSection ; as condições de ordenação classificam chaves com TXLSXSortBy e a ordenação de texto com TXLSXSortMethod; TXLSXExternalLink.Kind é um TXLSXExternalLinkKind e cada ligação lista entradas TXLSXExternalDefinedName com Name e RefersTo
Custom XML partsTXLSXWorkbook.CustomXmlParts preserva XML personalizado específico de itens: Add, Deletee Clear mantêm as partes, cada TXLSXCustomXmlPart transporta o seu payload em Xml mais um ItemId e uma lista de strings SchemaRefs de relações de esquema (AddSchemaRef acrescenta), e as partes preservadas fazem round trip na gravação sem alterações
Cell style payloadsTXLSXCellStylePayload é um pacote de estilos imutável e partilhável, anexado a células individuais: Acquire / Release gerem a sua contagem de referências, Clone copia-o, IsDefault testa o estilo predefinido, e InternKey identifica payloads iguais para que o armazenamento os possa desduplicar
Controls, drawings, and sparklinesTXLSXWorksheet.FormControls é uma coleção TXLSXFormControls de objetos TXLSXFormControl — cada um expõe ControlType, Caption, MacroName, LinkedCelle a sua lista Items — tipados por TXLSXFormControlType, com TXLSXFormControlItems a guardar o texto dos itens por controlo; os objetos de desenho reportam o seu tipo através de TXLSDrawingObjectKind, e os grupos de sparklines expõem a escala de eixos e o comportamento de células vazias através de TXLSXSparklineAxisType e TXLSXSparklineEmptyCells
ChartsOs grupos de plotagem e as séries classificam agrupamento de barras, símbolos de marcadores e posições de rótulos de dados com os enums TXLSXChartBarGrouping, TXLSXChartMarkerSymbole TXLSXChartDataLabelPos ; os nós do modelo de gráfico partilham a classe base TXLSXChartMutable , e TXLSXChartLayoutResolver.ResolveChart preenche um TXLSXChartResolvedLayout de retângulos TXLSXChartLayoutRect para gráfico, título, legenda, plotagem e títulos de eixos
Pagination keep blocksKeepRowsTogether / KeepColumnsTogether na superfície de paginação XLSX mantêm registos TXLSXKeepTogetherRange e TXLSXKeepTogetherCols para que o planeamento de quebras de página mantenha um bloco numa única página
DiagnosticsTXLSXWorksheet.CheckDataValidations devolve registos TXLSXValidationIssue (célula, índice de validação, motivo); TXLSXWorkbook.ScanUnknownFunctions devolve registos TXLSXUnknownFunctionInfo que localizam chamadas não implementadas em células e nomes definidos; TXLSXCells.GetStorageStatistics preenche um registo TXLSXCellStorageStatistics com contagens de células, blocos de linhas, bytes por payload e blanks com estilo; TXLSXWorksheet.BuildRowMajorCellOrder devolve um TXLSXRowMajorOrder que descreve a ordem de travessia em memória das células povoadas
TXLSXWorkbook.FormulaLocale lê ou escreve a etiqueta de localização usada ao analisar e serializar fórmulas, espelhando o tratamento de localização de fórmulas do livro clássico

Slicers de tabela

Os slicers de tabela (Excel 2013+) são gravados e inspecionados através de duas coleções: TXLSXWorksheet.Slicers guarda as vistas de slicer por folha de cálculo (TXLSXSlicer) e TXLSXWorkbook.SlicerCaches guarda as origens de dados partilhadas (TXLSXSlicerCache)

property TXLSXWorksheet.Slicers: TXLSXSlicers;
property TXLSXWorkbook.SlicerCaches: TXLSXSlicerCaches;

{ TXLSXSlicers }
function Add(ATable: TXLSXTable; const AColumnName: WideString): TXLSXSlicer; overload;
function Add(ATable: TXLSXTable; const AColumnName: WideString;
  ARow1, ACol1, ARow2, ACol2: Integer): TXLSXSlicer; overload;
function IndexByName(const AName: WideString): Integer;
function FindByName(const AName: WideString): TXLSXSlicer;
procedure Delete(Index: Integer);
procedure Clear;
property Count: Integer;
property Items[Index: Integer]: TXLSXSlicer;

{ TXLSXSlicer view }
property Name: WideString;          { workbook-unique }
property CacheName: WideString;
property Cache: TXLSXSlicerCache;
property Caption: WideString;
property StartItem: Integer;
property ColumnCount: Integer;
property ColumnWidth: WideString;
property ShowCaption: Integer;
property StyleName: WideString;
property LockedPosition: Integer;
property RowHeight: WideString;
property RowHeightEmu: Integer;
procedure SetBounds(ARow1, ACol1, ARow2, ACol2: Integer);
property FromRow, FromCol, ToRow, ToCol: Integer;   { anchor cell corners }
property FromRowOff, FromColOff, ToRowOff, ToColOff: Integer; { EMU offsets }
property AnchorType: TXLSXAnchorEditAs;
property HasAnchor: Boolean;

{ TXLSXSlicers, load-path entry }
function AddInternal: TXLSXSlicer;

{ TXLSXSlicerCache }
property Name: WideString;          { e.g. Slicer_Region }
property SourceName: WideString;    { source table column / pivot field }
property IsTableCache: Boolean;
property IsPivot: Boolean;
property IsNonOlapPivot: Boolean;
property ItemCount: Integer;
property ItemCacheIndex[Index: Integer]: Integer;
property ItemSelected[Index: Integer]: Boolean;
function SetSelectedItems(const CacheItemIndices: array of Integer): Integer;
function ClearSelection: Integer;
property TableId: Integer;
property TableColumnId: Integer;
property SortOrder: WideString;     { '' | ascending | descending }
property CrossFilter: WideString;   { '' | none | showItemsWithDataAtTop | showItemsWithNoData }
property CustomListSort: Integer;   { -1 absent, else 0/1 }

{ TXLSXSlicerCaches }
function Add: TXLSXSlicerCache;
function FindByName(const AName: WideString): TXLSXSlicerCache;
function IndexOfName(const AName: WideString): Integer;
function FindForTableColumn(ATableId, ATableColumnId: Integer): TXLSXSlicerCache;
procedure Delete(Index: Integer);
procedure Clear;
property Count: Integer;
property Items[Index: Integer]: TXLSXSlicerCache;
      

Slicers.Add(Table, ColumnName) constrói um slicer de ponta a ponta: regista ou reutiliza a cache de suporte chamada Slicer_<column>, reserva o nome definido #N/A correspondente, grava a extensão slicerList da folha de cálculo e ancora a vista com uma âncora de desenho compatível com markup cujo aviso de fallback cobre versões anteriores do Excel; a segunda sobrecarga fixa o retângulo da vista, caso contrário é usada uma âncora predefinida à direita da tabela

As vistas e caches carregadas são analisadas de novo ao abrir, as caches partilhadas são reutilizadas entre vistas, e apagar a última vista de uma cache elimina a cache; os atributos e extensões não reconhecidos mantêm a sua representação original, enquanto as ligações de tabela acompanham os ids de tabela gravados e as ligações de Pivot suportadas acompanham as identidades de folhas gravadas

As caches de Pivot não OLAP importadas suportadas expõem inspeção tipada de membros e alterações de seleção guardadas através de IsNonOlapPivot, ItemCount, ItemCacheIndex, ItemSelected, SetSelectedItems e ClearSelection; consulte a seleção de Slicer de Pivot para conhecer o comportamento de vistas partilhadas, a atomicidade de falhas e o limite da máscara de campo importado

As caches de Pivot não suportadas mantêm os respetivos bytes originais; uma vista de Slicer carregada de um ficheiro também é acessível como objeto de desenho através de TXLSXDrawingObject.Slicer

Exemplo

var
  Ref: WideString;
  Row, Col: Integer;
begin
  Ref := XlsxCellRef(10, 5);
  if XlsxParseCellRef(Ref, Row, Col) then
    Worksheet.Cells.Item[Row, Col].Value := 'Checked';
end;
    

Consulte a API de infraestrutura de livros de trabalho para conhecer as callbacks de E/S, os conjuntos de estilos do serializador, a verificação de ficheiros encriptados e os contratos do grafo de dependências do espaço de trabalho