lxHandleX, incluindo opções de exportação HTML e funções auxiliares para chamadores que trabalham diretamente com referências de células XLSX ou texto de payload XML
property FormulaArrayMemoryLimit: Int64;
MUNIT, tem padrão de 64 MiB, se aplica aos workers de recálculo paralelo, e limita valores abaixo de um elemento Double
type
TXLSXHtmlExportOptions = class
constructor Create;
property Title: WideString;
property WriteDocument: Boolean;
property IncludeStyles: Boolean;
property IncludeBOM: Boolean;
property TableClass: WideString;
end;
| Title | Define o título do documento quando WriteDocument é True |
| WriteDocument | Quando True, grava um documento HTML completo. Quando False, grava apenas o fragmento da tabela |
| IncludeStyles | Controla se o HTML exportado inclui CSS gerado e informações de estilo inline |
| IncludeBOM | Controla se a saída de arquivo e stream começa com um BOM UTF-8 |
| TableClass | Adiciona um nome de classe CSS ao elemento <table> gerado |
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;
| XlsxColumnLabel | Converte um índice de coluna (base 1) em um rótulo de coluna no estilo A1, como A, Z ou AA |
| XlsxCellRef | Constrói uma referência de célula no estilo A1 a partir de números de linha e coluna (base 1) |
| XlsxColumnIndex | Converte um rótulo de coluna no estilo A1 em um índice de coluna (base 1) |
| XlsxParseCellRef | Analisa uma única referência de célula no estilo A1 e retorna as coordenadas de linha e coluna |
| XlsxParseRangeRef | Analisa um intervalo retangular no estilo A1 e retorna limites inclusivos com base 1 |
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 valores de atributos XML e preserva o espaço em branco de atributos que o Excel precisa ler de volta exatamente
Os membros avançados do XLSX documentados neste arquivo de ajuda recebem e retornam 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 replace | TXLSXWorksheet.FindText / FindTextIn aceitam TXLSXFindOptions (diferenciar maiúsculas, célula inteira, buscar fórmulas, wildcards, para trás, por colunas) e ReplaceText recebe um TXLSXReplaceEvent cujo resultado seleciona raReplace, raSkip ou raAbort por ocorrência, com um ANewText gravável para substituições por célula |
| Progress and saving | TXLSXWorkbook.OnProgress / OnProgressEx entregam TXLSXProgressPhase e (na forma estendida) TXLSXProgressState com uma flag Abort; RecalcBeforeSave é um TXLSXRecalcMode que seleciona recálculo manual, apenas de células alteradas ou sempre antes da serialização; OnPassword é um TXLSXPasswordEvent que fornece senhas de abertura e de gravação |
| Custom properties | TXLSXWorkbook.CustomProperties é uma coleção TXLSXCustomProperties com criadores tipados AddText / AddNumber / AddDate / AddBoolean, FindByName, Delete e Clear, mais a enumeração Count e Items; cada TXLSXCustomProperty marca seu valor com um TXLSXCustomPropType que corresponde ao mapeamento de variantes do ECMA-376 |
| Style overlays | TXLSXStyleOverlays gerencia overrides por intervalo sobre os estilos armazenados: Add cria um, ApplyToCell reestiliza uma única célula, Resolve, ResolveRowDefault e ResolveColumnDefault respondem às consultas de estilo durante o carregamento, HasVirtualStyle informa estilos gerados, MaxVirtualRow limita as linhas virtuais, ApplyStructuralEdit desloca os overlays após edições de linha ou coluna, e Clear, Count e Items mantêm a coleção |
| Styles, fills, and overlays | TXLSXFill expõe Pattern, GradientKind e GradientStops por meio de TXLSXFillPattern, TXLSXGradientKind e TXLSXGradientStop; TXLSXWorksheet.StyleOverlays é uma coleção TXLSXStyleOverlays cujas entradas TXLSXStyleOverlay carregam um retângulo, as partes de formato afetadas e o estilo de célula que faz o override |
| Tables, sorts, and links | Estilos de tabela personalizados (TXLSXWorkbook.CustomTableStyles) constroem a formatação de seções a partir dos slots de TXLSXTableStyleSectionKind: a coleção oferece Add, FindByName, Delete, Clear, Count e Items, enquanto cada TXLSXCustomTableStyle expõe Name, SectionSize, PivotStyle e TableStyleFlag e responde às consultas HasSection / ResolveSection; condições de ordenação classificam chaves com TXLSXSortBy e ordenação de texto com TXLSXSortMethod; TXLSXExternalLink.Kind é um TXLSXExternalLinkKind e cada link lista entradas TXLSXExternalDefinedName com Name e RefersTo |
| Custom XML parts | TXLSXWorkbook.CustomXmlParts preserva XML personalizado específico do item: Add, Delete e Clear mantêm as partes, cada TXLSXCustomXmlPart carrega seu payload em Xml mais um ItemId e uma lista de strings SchemaRefs de relationships de esquema (AddSchemaRef anexa), e as partes preservadas passam pelo salvamento intocadas |
| Cell style payloads | TXLSXCellStylePayload é um pacote de estilos imutável e compartilhável anexado a células individuais: Acquire / Release gerenciam sua contagem de referências, Clone o copia, IsDefault testa o estilo padrão, e InternKey identifica payloads iguais para que o armazenamento possa eliminar duplicatas |
| Controls, drawings, and sparklines | TXLSXWorksheet.FormControls é uma coleção TXLSXFormControls de objetos TXLSXFormControl — cada um expõe ControlType, Caption, MacroName, LinkedCell e sua lista Items — tipados por TXLSXFormControlType, com TXLSXFormControlItems mantendo o texto de itens por controle; objetos de desenho informam seu tipo por meio de TXLSDrawingObjectKind, e grupos de sparkline expõem escala de eixos e comportamento de células vazias por meio de TXLSXSparklineAxisType e TXLSXSparklineEmptyCells |
| Charts | Grupos de plotagem e séries classificam agrupamento de barras, símbolos de marcador e posições de rótulos de dados com os enums TXLSXChartBarGrouping, TXLSXChartMarkerSymbol e TXLSXChartDataLabelPos; os nós do modelo de gráfico compartilham 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 eixo |
| Pagination keep blocks | KeepRowsTogether / KeepColumnsTogether na superfície de paginação XLSX mantêm os records TXLSXKeepTogetherRange e TXLSXKeepTogetherCols para que o planejamento de quebras de página mantenha um bloco em uma única página |
| Diagnostics | TXLSXWorksheet.CheckDataValidations retorna records TXLSXValidationIssue (célula, índice de validação, motivo); TXLSXWorkbook.ScanUnknownFunctions retorna records TXLSXUnknownFunctionInfo localizando chamadas não implementadas em células e nomes definidos; TXLSXCells.GetStorageStatistics preenche um record TXLSXCellStorageStatistics com contabilidade de células, blocos de linha, bytes por payload e blanks estilizados; TXLSXWorksheet.BuildRowMajorCellOrder retorna um TXLSXRowMajorOrder descrevendo a ordem de travessia em memória das células populadas |
TXLSXWorkbook.FormulaLocale lê ou grava a tag de locale usada ao analisar e serializar fórmulas, espelhando o tratamento de locale de fórmulas da pasta de trabalho clássicaSlicers de tabela (Excel 2013+) são gravados e inspecionados por meio de duas coleções: TXLSXWorksheet.Slicers mantém as views de slicer por planilha (TXLSXSlicer) e TXLSXWorkbook.SlicerCaches mantém as fontes de dados compartilhadas (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: registra ou reutiliza o cache de suporte nomeado Slicer_<column>, reserva o nome definido #N/A correspondente, grava a extensão slicerList da planilha e ancora a view com uma âncora de desenho de markup-compatibility cujo aviso de Fallback cobre versões antigas do Excel; o segundo overload fixa o retângulo da view, caso contrário é usada uma âncora padrão à direita da tabela
Views e caches carregados são analisados de volta na abertura, caches compartilhados são reutilizados entre views, e excluir a última view de um cache descarta o cache; atributos e extensões não reconhecidos retêm sua representação original, enquanto vínculos de tabela acompanham os ids de tabela salvos e conexões de tabela dinâmica com suporte acompanham as identidades de planilha salvas
Caches de tabela dinâmica não-OLAP importados com suporte expõem inspeção tipada de membros e mudanças de seleção protegidas por meio de IsNonOlapPivot, ItemCount, ItemCacheIndex, ItemSelected, SetSelectedItemse ClearSelection; veja seleção de Slicer de tabela dinâmica para o comportamento de views compartilhadas, atomicidade de falhas e o limite de máscara de mesmo campo importado
Caches de tabela dinâmica sem suporte retêm seus bytes originais; uma view de Slicer carregada de um arquivo também é acessível como objeto de desenho por meio de TXLSXDrawingObject.Slicer
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;
Veja a API de infraestrutura da pasta de trabalho para callbacks de I/O, pools de estilo do serializador, verificação de arquivos criptografados e contratos de grafo de dependências de workspace