Documentación HotXLS

Miembros adicionales de la API de la biblioteca

Esta página completa la referencia de los tipos públicos que dan soporte a las API principales de libros, hojas de cálculo, renderizado, importación, diagnósticos y visor, pero que no requieren una guía independiente orientada a tareas

Filtrado y formato condicional

TXLSAutofilterAdd, AddAutofilterData, AssignFrom, Cleary ParseAutofilterData editan o importan la definición del filtro; SetRangeBounds(ARow1, ACol1, ARow2, ACol2) restaura los límites inclusivos de base uno sin eliminar los criterios cargados ni las formas de los desplegables, e ignora los límites no positivos o invertidos y un recuento de columnas que difiera de los campos cargados; Defined, FirstRow, FirstCol, LastCol, LastRowy FieldCount exponen sus límites activos y el recuento de columnas filtradas
TXLSAutofilterItemShape expone el dibujo del botón de filtro asociado al elemento, y el criterio de filtro cargado está disponible como un registro operando TXLSAutofilterDOPER — DataType selecciona la forma del operando y grbitSgn lleva los bits de signo y de banderas — para su inspección o su edición round-trip
TXLSDataBarSpecAxisColor, AxisIsThemeColor, AxisThemeColorId, AxisThemeColorTint, y ClearAxisThemeColor controlan el eje; Direction, GradientFill, NegativeBarBorderColorSameAsPositive, NegativeBarColor, NegativeBarColorSameAsPositivey NegativeBorderColor controlan la apariencia de la barra; IsIndexedColor, IndexedColorIndexy ClearIndexedColor gestionan el color de barra de índice de paleta
TXLSIconSetSpecThresholdEqualsInclude selecciona la comparación inclusiva o exclusiva para cada umbral de icono
TXLSCfValueIsIndexedColor y IndexedColorIndex informan de un color de umbral almacenado como índice de paleta heredado, ClearIndexedColor elimina de nuevo esa forma, y los colores de tema o literales siguen disponibles a través de los descriptores de acceso existentes

TXLSCfValue, TXLSDataBarSpec, TXLSColorScaleSpec, TXLSIconSetSpecy TXLSDxfStyle aceptan AttachWriteGuardOwner, que vincula el objeto de regla a su libro de trabajo propietario para que las ediciones adquieran automáticamente un bloqueo de escritura; el propietario implementa TXLSCondFormatWriteGuardOwner, cuyo único método AcquireWriteGuard entrega a la regla el bloqueo de escritura del libro. TXLSDxfStyle añade FontColorIndex con FontColorIsIndexed , además de los pares FillFgColorIndex / FillFgColorIsIndexed y FillBgColorIndex / FillBgColorIsIndexed para colores de regla indexados de paleta, y las invalidaciones de fuente diferencial FontName, FontSizey FontScheme (cadena vacía, un tamaño en puntos o una ranura de fuente del tema como major / minor) junto a los miembros existentes de negrita, cursiva, subrayado y color; cada asignación adquiere el bloqueo de escritura y marca la regla como dirty para su reemisión

TXLSConnections, TXLSDataTablesy TXLSQueryTables exponen OnAcquireWriteGuard (tipo TXLSConnectionAcquireWriteGuard, TXLSDataTableAcquireWriteGuardy TXLSQueryTableAcquireWriteGuard), el enlace que sus rutas de edición usan para obtener el IXLSWorkbookWriteGuard del libro propietario antes de modificar y para hacer avanzar la generación del libro después; el bloqueo registra StartGenerationy Complete marca la escritura como terminada para que las cachés dependientes puedan recompilarse

Las conexiones de datos preservadas llevan una descripción con tipo: TXLSConnectionKind (xlckUnknown, xlckOdbc, xlckDao, xlckFile, xlckWeb, xlckOleDb, xlckText, xlckAdo) clasifica la conexión, TXLSConnectionCredentials (xlccIntegrated, xlccNone, xlccStored, xlccPrompt) registra su modo de autenticación, y cada valor de parámetro de conexión se etiqueta con TXLSConnectionParameterValueKind (xlcpvNone, xlcpvBoolean, xlcpvDouble, xlcpvInteger, xlcpvString, xlcpvCell). Las tablas de datos What-if informan de su tipo de definición almacenada mediante TXLSDataTableKind

Tablas de datos What-if y agrupación de tablas dinámicas

TXLSDataTableAssign, ContainsCelle IsRoot copian e inspeccionan una tabla; Kind, FirstRow, FirstCol, LastCol, LastRow, AlwaysCalculate, ColumnInputCol, ColumnInputRow, ColumnInputDeleted, RowInputCol, RowInputRowy RowInputDeleted exponen la definición de cálculo almacenada
TXLSDataTablesAdd, AddExisting, Delete, Clear, Assign, AdjustForShifty Offset mantienen la colección; FindByCell y FindRoot localizan la tabla que contiene una celda determinada o que tiene en ella su raíz; Count, Itemsy OnChange exponen el estado de la colección
TXLSPivotCacheFieldGroupBaseField y GroupParentField exponen las relaciones entre un campo agrupado y su campo de origen o primario

Los umbrales de conjuntos de iconos se pueden renderizar o validar por programa: XLSCfIconSetCount informa de cuántos iconos define un TXLSIconSetType , y XLSBuildCfIconGeometry rellena un TXLSCfIconGeometry con las primitivas (TXLSCfIconPrimitive, tipo TXLSCfIconPrimitiveKind: cfipPolygon, cfipEllipse, cfipRect, cfipLine) y los puntos (TXLSCfIconPoint) que dibujan un icono, de modo que los renderizadores personalizados coincidan con las formas de icono integradas de Excel

Diagnósticos, trazado de fórmulas y validación

TXLSDiagnosticCode, NativeCode, Message, Severity, ExceptionClass, PartName, RecordId, SheetIndex, SheetNamey StreamOffset identifican un diagnóstico de analizador, escritor o paquete
TXLSDiagnosticsAdd anexa un diagnóstico, Clear restablece la colección y Count junto con Items enumeran sus entradas
TXLSDiagnosticSeverity and TXLSDiagnosticOperationTXLSDiagnosticSeverity (xlsDiagnosticInfo, xlsDiagnosticWarning, xlsDiagnosticError, xlsDiagnosticFatal) clasifica un diagnóstico y TXLSDiagnosticOperation (xlsOperationNone, xlsOperationOpen, xlsOperationSave, xlsOperationCalculate, xlsOperationExport) nombra la fase que lo produjo; los controladores de OnDiagnostic leen ambos a partir del TXLSDiagnostic
TXLSFormulaDebugSessionCurrentStep, DependencyCount, NodeCounty StepCount exponen la instantánea actual del depurador y los tamaños de su traza
TXLSFormulaTracerStepCount informa del número de pasos de evaluación registrados
TXLSImportCheckAddRule, AddUniqueRuley AddCrossColumnRule configuran predicados de columna, unicidad compuesta y comparaciones tipadas; Check devuelve infracciones estructuradas a partir de los valores almacenados de la hoja y de las cachés de fórmulas, sin recálculo ni materialización de celdas empaquetadas; HeaderRow, FirstRow, LastRow, OnVerifyCell, ViolationCounty Violation exponen límites, devoluciones de llamada y resultados; Annotatey KeepOnlyViolations son operaciones explícitas de libro de corrección; vea esquemas de validación de importación para tipos, límites, sistemas de fechas, identidad de tupla y comportamiento de fallos

Esquemas de validación de importación

TXLSImportCheck de lxImportCheck valida una TXLSXWorksheet contra reglas propiedad de la aplicación; examina los valores escalares almacenados y los resultados de fórmulas almacenados, con coordenadas de hoja de base uno y sin conversión implícita de texto a número, de texto a fecha o de texto a Boolean

Validator := TXLSImportCheck.Create;
try
  Validator.HeaderRow := 1;
  Rule := Validator.AddRule(2);
  Rule.Name := 'quantity';
  Rule.Flags := [irRequired, irValueType, irValueRange];
  Rule.ValueKind := ivkInteger;
  Rule.MinimumValue := 1;
  Rule.MaximumValue := 1000;

  Validator.AddUniqueRule([1, 3]).Name := 'account-and-region';
  Validator.AddCrossColumnRule(4, 5, icLessOrEqual).Name := 'start-before-end';
  FailureCount := Validator.Check(Sheet);
  if FailureCount > 0 then
    Validator.Annotate(Sheet, 'Import validator');
finally
  Validator.Free;
end;

HeaderRow > 0 empieza a comprobar en la fila siguiente y prevalece sobre FirstRow; en caso contrario FirstRow es 1 por defecto; LastRow = 0 usa la última fila usada de la hoja, mientras que un LastRow positivo puede incluir celdas ausentes sin crearlas; las columnas deben estar entre 1 y 16,384 y los límites activos de filas de datos entre 1 y 1,048,576

Reglas de columna y tipos explícitos

TlxImportColumnRuleColumn, Flags, Name, Title, MinLength, MaxLength, Pattern, ValueKindy DateSerialMode configuran una columna; MinimumValue, MaximumValue, HasMinimum, HasMaximum, MinimumInclusivey MaximumInclusive configuran los límites; Validate comprueba la configuración del esquema y PreparePattern prepara el regex; las dos sobrecargas de Check devuelven un Boolean con un mensaje de error y, opcionalmente, un TlxImportViolationKind
TlxImportRuleFlagsirRequired, irTextLength, irPattern, irUniquey irCallback conservan sus comprobaciones existentes; irValueType activa ValueKind y irValueRange activa los límites configurados; una columna sin banderas no se comprueba
TlxImportValueKindivkAny acepta valores escalares finitos admitidos, ivkNumber acepta Variants numéricos finitos, ivkInteger exige además un valor entero, ivkDate acepta Variants de fecha o seriales de Excel activados explícitamente, ivkBoolean exige un Variant Boolean y ivkText exige un Variant de cadena
TlxImportDateSerialModeidsNone es el valor predeterminado y mantiene los valores numéricos distintos de las fechas; idsExcel1900 y idsExcel1904 interpretan explícitamente los valores numéricos de una columna que usa irValueType con ValueKind = ivkDate

AddRule(Column) reemplaza y libera cualquier regla previa de esa columna; los predicados por valor de tipo, rango, longitud y patrón se saltan los valores ausentes, los nulos y las cadenas vacías, mientras que irRequired los reporta; la unicidad conserva las políticas diferenciadas que se describen abajo; el espacio en blanco no vacío sigue siendo un valor; un número no cuenta como Boolean, una fecha no cuenta como número ordinario y una cadena de aspecto numérico sigue siendo texto

Asignar MinimumValue o MaximumValue activa ese límite; tanto HasMinimum como HasMaximum pueden desactivarlo de nuevo; ambos conmutadores de inclusividad son True por defecto; los límites deben ser números o fechas tipados finitos, y dos límites deben ser comparables y describir un intervalo no vacío; los límites invertidos, ausentes, incompatibles o vacíos elevan una excepción antes de que empiece la validación de la hoja

Los límites numéricos comparan valores numéricos y los límites de fecha comparan fechas; las comparaciones entero con entero conservan todos los bits de Int64 y UInt64; los valores de una categoría incompatible fallan la comprobación de rango; los predicados de longitud de texto y regex siguen inspeccionando la representación textual del escalar, y las comprobaciones regex conservan el comportamiento existente de IsMatch, así que use anclas como ^...$ cuando deba coincidir el texto completo; un regex no válido desactiva su comprobación de patrón por compatibilidad

Valores de Excel con formato de fecha

Una celda importada de Excel puede contener un serial numérico aunque su formato numérico muestre una fecha; elija un modo de serial explícitamente cuando ese sea el esquema de importación aceptado; el modo afecta solo a la validación y nunca cambia el valor almacenado de la celda

Rule := Validator.AddRule(4);
Rule.Flags := [irRequired, irValueType, irValueRange];
Rule.ValueKind := ivkDate;
if Sheet.Workbook.Date1904 then
  Rule.DateSerialMode := idsExcel1904
else
  Rule.DateSerialMode := idsExcel1900;
Rule.MinimumValue := VarFromDateTime(EncodeDate(2026, 1, 1));
Rule.MaximumValue := VarFromDateTime(EncodeDate(2026, 12, 31));

VarFromDateTime se declara en Variants y EncodeDate en SysUtils; los seriales numéricos deben ser no negativos y resolverse antes del 1 de enero del año 10000; los seriales fraccionarios conservan su hora del día; el sistema de 1900 rechaza todo serial desde el 60 inclusive hasta el 61 exclusivo porque ese intervalo denota el día bisiesto ficticio; el sistema de 1904 mapea el serial cero al 1 de enero de 1904

Los límites de fecha incluyen la hora del día, de modo que un máximo fijado a medianoche del 31 de diciembre excluye las horas posteriores de ese día; use un límite superior exclusivo en el 1 de enero del año siguiente cuando deba aceptarse el día final completo; las fechas textuales como 10/08/2026 siguen siendo texto sin importar el modo de serial configurado

Unicidad compuesta y comparaciones entre columnas

AddUniqueRule(const AColumns: array of Integer): TlxImportUniqueRuleAñade una restricción de tupla independiente sobre una lista ordenada y no vacía de columnas distintas; Name identifica la regla, Title prefija su mensaje, ColumnCount y el Columns[Index] de base cero exponen sus miembros, y SkipIncompleteRows es True por defecto
AddCrossColumnRule(ALeftColumn, ARightColumn: Integer; AComparison: TlxImportComparison): TlxImportCrossColumnRuleAñade una comparación de la misma fila con LeftColumn y RightColumn de solo lectura, y Comparison, Name, Titley SkipBlankValues editables, cuyo valor predeterminado es True
TlxImportComparisonicEqual, icNotEqual, icLess, icLessOrEqual, icGreatery icGreaterOrEqual seleccionan la relación; los pares numéricos y de fecha comparan sus valores, los pares Boolean ordenan False antes que True, y los pares de cadena comparan unidades de código UTF-16 ordinalmente con distinción de mayúsculas

Las claves compuestas conservan el tipo Variant exacto y la identidad textual de cada miembro; Integer(1), Double(1), la cadena '1', un Boolean y una fecha son miembros distintos; no hay plegado de mayúsculas, normalización Unicode, análisis de configuración regional ni ambigüedad de delimitadores; combinaciones como ('ab', 'c') y ('a', 'bc') siguen siendo diferentes; cada pasada de validación inicia un índice de tuplas nuevo

Cuando SkipIncompleteRows = True, un miembro ausente, nulo o de cadena vacía excluye esa fila de la unicidad de tuplas; fijarlo en False incluye esos miembros con sus identidades Variant originales; un duplicado reporta la primera columna de la tupla como dirección de celda y la primera fila coincidente a través de FirstDuplicateRow

El irUnique de una sola columna existente conserva su comportamiento de coincidencia basado en texto y sin distinción de mayúsculas, y se salta los valores ausentes o nulos; use AddUniqueRule([Column]) cuando se exija identidad tipada estricta para una columna

Las comparaciones entre columnas nunca fuerzan cadenas a números, números a Boolean ni números ordinarios a fechas; las categorías mixtas incompatibles fallan incluso con icNotEqual; las comparaciones de cadena distinguen Unicode compuesto y descompuesto, preservan caracteres nulos embebidos y usan ordenación de prefijo corto primero; cuando SkipBlankValues = False, cualquier operando en blanco produce una infracción entre columnas

Resultados estructurados y libros de corrección

TlxImportViolationRow, Col, SheetNamey Address identifican la celda, con Address en notación A1; ValueTexty ErrorText transportan información de visualización; RuleNamey Kind identifican la regla configurada y la categoría de fallo; RelatedColumn identifica el segundo operando de un fallo entre columnas y FirstDuplicateRow identifica la fila original en los fallos de unicidad
TlxImportViolationKindivRequired, ivTextLength, ivPattern, ivUnique, ivCallback, ivValueType, ivValueRange, ivCellError, ivFormulaCacheMissing, ivCompositeUniquey ivCrossColumn distinguen las categorías de fallo admitidas

Check(Sheet) devuelve el número de infracciones, y ViolationCount más el Violation(Index) de base cero enumeran el informe; una regla de columna reporta su primer predicado fallido, mientras que las reglas de tupla y de comparación configuradas de forma independiente pueden añadir más infracciones para la misma celda; asigne valores Name significativos cuando los llamadores necesiten identificadores estables de reglas de aplicación

Las celdas de fórmula se validan usando sus valores en caché almacenados; una fórmula sin resultado en caché almacenado reporta ivFormulaCacheMissing, y un resultado de error reporta ivCellError; recalcule explícitamente antes de comprobar cuando se necesiten resultados frescos de fórmulas; la validación no accede a fuentes externas, no altera definiciones de fórmulas ni evalúa fórmulas sin caché

OnVerifyCell conserva la firma de devolución de llamada TlxImportVerifyCell y se ejecuta tras los predicados de columna aplicables correctos y las comprobaciones de unicidad; devuelve un Boolean y puede fijar un mensaje de error de la aplicación; las devoluciones de llamada deben mantener el libro y el esquema de validación sin cambios, y las escrituras del libro son rechazadas por el lease de lectura; las excepciones de la devolución de llamada se propagan y el lease se libera para operaciones posteriores

Check nunca anota, borra filas ni materializa valores empaquetados; use Annotate después de comprobar para aplicar fuentes rojas y anexar texto de error a los comentarios existentes, o llame explícitamente a KeepOnlyViolations para eliminar las filas sin infracciones y crear un libro de corrección; estos métodos modifican la hoja suministrada, así que llámelos sobre el libro previsto tras revisar el informe

La validación toma prestadas la hoja y el libro para la llamada síncrona; no adopta la propiedad de los objetos del llamador ni exige un libro propiedad de una interfaz; un lease de lectura protege las instantáneas de celdas almacenadas pertinentes y el acceso a la caché de fórmulas almacenada durante toda la comprobación

TXLSExternalLinkUpdateMode = (xluPromptUser, xluNever, xluAlways);

property IXLSWorkbook.SaveExternalLinkValues: Boolean;
property IXLSWorkbook.UpdateLinks: TXLSExternalLinkUpdateMode;
property TXLSXWorkbook.SaveExternalLinkValues: Boolean;
property TXLSXWorkbook.UpdateLinks: TXLSExternalLinkUpdateMode;
      
Ambos motores tienen como valor predeterminado guardar los valores en caché y xluPromptUser; xluNever y xluAlways solo cambian la preferencia de actualización almacenada en el libro y nunca autorizan ni inician el acceso a archivos externos o a la red

Auditoría de cálculo y sugerencias del libro

function TXLSWorkbook.RecalcAndVerify(MaxIssues: Integer = 10000): TXLSCalculationAuditReport;
function TXLSXWorkbook.RecalcAndVerify(MaxIssues: Integer = 10000): TXLSCalculationAuditReport;
function TXLSWorkbook.RecalcAndVerifyEx(const Options: TXLSRecalcAuditOptions): TXLSCalculationAuditReport;
function TXLSXWorkbook.RecalcAndVerifyEx(const Options: TXLSRecalcAuditOptions): TXLSCalculationAuditReport;
function TXLSWorkbook.RunCalculationAudit(const Options: TXLSRecalcAuditOptions): TXLSCalculationAuditReport;
function TXLSWorkbook.FormulaIsVolatile(Formula: WideString): Boolean;

function TXLSWorkbook.AuditOverlayHash(SheetIndex, Row, Col: Integer): Integer;
function TXLSWorkbook.AuditOverlayRead(SheetIndex, Row, Col: Integer; var Value: Variant): Boolean;
procedure TXLSWorkbook.AuditOverlayWrite(SheetIndex, Row, Col: Integer; const Value: Variant);
procedure TXLSWorkbook.AuditOverlayClear;

TXLSCalculationAuditIssueKind = (xlcaiCacheMismatch, xlcaiParseFailure,
  xlcaiMissingFunction, xlcaiMissingName, xlcaiUnsupportedArguments,
  xlcaiCircularReference, xlcaiExternalReferenceDenied,
  xlcaiExternalReferenceMissing, xlcaiDataTableSkipped, xlcaiCancelled,
  xlcaiInternalFailure);

TXLSCalculationAuditIssue = record
  Kind: TXLSCalculationAuditIssueKind;
  SheetIndex: Integer;
  SheetName: WideString;
  Row: Integer;
  Col: Integer;
  Formula: WideString;
  Symbol: WideString;
  Expected: Variant;
  Actual: Variant;
  ResultCode: Integer;
  Stack: WideString;
  ExternalTarget: WideString;
end;
TXLSCalculationAuditIssues = array of TXLSCalculationAuditIssue;

TXLSRecalcAuditProgress = procedure(ASender: TObject;
  ACurrent, ATotal: Integer; var ACancel: Boolean) of object;

property WorkbookCodeName: WideString;
property CalculationThreadMode: TXLSCalculationThreadMode;
property ForceFullCalculationState: TXLSOptionalBooleanState;
property RefreshAllOnLoadState: TXLSOptionalBooleanState;
      
RecalcAndVerify combina los fallos de símbolos de fórmulas y las discrepancias de valores en caché en categorías estructuradas estables, con coordenadas de hoja de cálculo, fórmulas, símbolos, valores esperados y reales, y truncamiento acotado, sin alterar las cachés ni la semántica del libro. RecalcAndVerifyEx ejecuta la auditoría profunda: evalúa cada fórmula una vez a través del grafo de dependencias dentro de una capa de resultados aislada, de modo que las celdas dependientes leen esta pasada en lugar de cachés obsoletas; clasifica los fallos de evaluación (argumentos no admitidos, referencias circulares, referencias externas denegadas o ausentes, tablas de datos omitidas, cancelación, fallos internos) con códigos de resultado, registra una pila de llamadas acotada por cada fallo, respeta un presupuesto de incidencias y un receptor de progreso/cancelación, y permanece en solo lectura salvo que ApplyResults confirme de forma atómica los valores recalculados tras una pasada completamente correcta sobre una estructura de libro sin cambios
AbsoluteTolerance y RelativeTolerance controlan la notificación de discrepancias, no los valores intermedios de cálculo ni la aplicación explícita de cachés Para resultados numéricos, una discrepancia exige una diferencia absoluta superior a AbsoluteTolerance y, cuando la tolerancia relativa está habilitada, superior a RelativeTolerance * max(abs(Expected), abs(Actual)) La igualdad en cualquiera de los dos umbrales se tolera; los valores modificados entran igualmente en la superposición de la auditoría para que las fórmulas dependientes vean el cálculo actual, y ApplyResults confirma esos valores aunque sus diferencias no sean notificables Una auditoría de solo lectura nunca altera las cachés almacenadas
Cada elemento de TXLSCalculationAuditReport.Issues es un TXLSCalculationAuditIssue; Kind selecciona una de las categorías xlcai* , Expected / Actual transportan los valores comparados en las discrepancias de caché, Stack es la cadena de llamadas de evaluación acotada que se muestra como Sheet!A1 > Sheet!B2 (el marco más externo primero), y ExternalTarget describe el libro externo en las incidencias de referencias externas. TXLSRecalcAuditOptions.OnProgress es un receptor TXLSRecalcAuditProgress que recibe el progreso de nodos ACurrent / ATotal y puede establecer ACancel para detener la auditoría en el siguiente límite de nodo con una única incidencia xlcaiCancelled issue
RunCalculationAudit es el punto de entrada del motor al que delegan los envoltorios de auditoría de nivel de libro, y acepta el mismo registro de opciones. FormulaIsVolatile informa de si una fórmula forzaría un recálculo en cada pasada (llamadas como NOW, RAND, TODAY, OFFSET, INDIRECT, o una referencia no resoluble)
La capa de superposición de la auditoría es una capa What-if sobre las cachés de celdas: AuditOverlayWrite almacena un valor de reemplazo para una celda (índice de hoja de base uno, fila y columna de base cero, según la convención del calculador), AuditOverlayRead y AuditOverlayHash la consultan, y AuditOverlayClear vacía la capa. Los valores superpuestos los devuelven los getters normales de valor de celda, de modo que el recálculo y la auditoría profunda los observan sin mutar las celdas de la hoja de cálculo; al limpiar la capa se restauran los valores almacenados
Las propiedades de sugerencias del libro conservan los estados ausente, false, true, disabled, automático y manual donde el formato de origen los admite; nunca inician trabajos de cálculo, actualización, sistema de archivos, red o base de datos al abrir

Estado de fórmulas de tabla y de IME

property TXLSXTable.ColumnCalculatedFormulaArrayStates[Index: Integer]: TXLSTableFormulaArrayState;
property TXLSXTable.ColumnTotalsFormulaArrayStates[Index: Integer]: TXLSTableFormulaArrayState;
property TDataValidation.ImeMode: TXLSDataValidationImeMode;
property TXLSXDataValidation.ImeModeKind: TXLSDataValidationImeMode;
      
Las fórmulas de columnas calculadas y de filas de totales conservan estados de array independientes de ausente, false, true o desconocido, incluidos los valores léxicos del origen sin modificar y las ediciones estructurales de columnas; la expansión de filas escalares rechaza las fórmulas array en lugar de cambiarlas silenciosamente
Los modos IME usan asignaciones explícitas de BIFF y OOXML, preservan los valores de origen desconocidos y rechazan el valor disabled, exclusivo de OOXML, cuando se crea para XLS clásico
Establecer SaveExternalLinkValues en False omite los registros clásicos XCT y CRN o el subárbol sheetDataSet del libro externo XLSX, conservando los destinos de vínculos, los nombres de hoja, los nombres definidos externos, las relaciones, las referencias de fórmulas, el XML desconocido y la caché en memoria; restaurar la propiedad a True en el mismo libro puede serializar de nuevo esa caché retenida
Los tokens de origen no compatibles que no se modifican permanecen preservados byte a byte o léxicamente, las asignaciones explícitas emiten solo valores legales, las partes XLSX sin cambios conservan la ruta de copia comprimida y la conversión XLS/XLSX transfiere ambas directivas; los libros ODS y de texto no tienen una declaración equivalente y se abren con los valores predeterminados, mientras que las partes de vínculos DDE y OLE preservadas no se tratan como cachés de celdas de libros externos

Inspección y eliminación de paneles de tareas de complementos web

function IXLSWorkbook.HasWebAddinTaskPanes: Boolean;
function IXLSWorkbook.WebAddinTaskPaneCount: Integer;
function IXLSWorkbook.RemoveWebAddinTaskPanes: Integer;
function TXLSXWorkbook.HasWebAddinTaskPanes: Boolean;
function TXLSXWorkbook.WebAddinTaskPaneCount: Integer;
function TXLSXWorkbook.RemoveWebAddinTaskPanes: Integer;
      
Los métodos de inspección reconocen solo las relaciones internas con la raíz del paquete cuyo tipo coincide exactamente con el tipo de relación del panel de tareas de complementos web; las relaciones externas, los tipos con distintas mayúsculas y minúsculas, las relaciones de hojas de cálculo y las partes con nombres similares se ignoran
La eliminación primero valida el grafo de relaciones completo, incluidos los destinos normalizados, el confinamiento a la raíz del paquete, los ciclos, las partes ausentes y los límites de recursos; después elimina todas las relaciones de raíz coincidentes y solo las partes alcanzables no compartidas por otra relación retenida, junto con las partes de relación de propiedad de los orígenes eliminados
La operación es atómica e idempotente, las partes de origen eliminadas no pueden reaparecer mediante el guardado de copia comprimida y los tipos de contenido se recompilan a partir del paquete restante; los grafos mal formados añaden el código de diagnóstico 1303 y generan una excepción antes de la mutación, mientras que el XLS clásico y ODS devuelven False, 0y -1 sin examinar el paquete

Directiva de visualización de objetos del libro

TXLSObjectDisplayMode = (xlsodmShowAll, xlsodmShowPlaceholders,
  xlsodmHideAll);

property IXLSWorkbook.ObjectDisplayMode: TXLSObjectDisplayMode;
property TXLSWorkbook.ObjectDisplayMode: TXLSObjectDisplayMode;
property TXLSXWorkbook.ObjectDisplayMode: TXLSObjectDisplayMode;
property TXLSPaginationModel.ExportObjectPlaceholders: Boolean;
property TXLSPDFExport.ExportObjectPlaceholders: Boolean;
property TXLSSvgExport.ExportObjectPlaceholders: Boolean;
property TXLSPageImageExporter.ExportObjectPlaceholders: Boolean;
property TXLSPrintDocument.ExportObjectPlaceholders: Boolean;
property TXLSXHtmlExportOptions.ExportObjectPlaceholders: Boolean;
      
El XLS clásico asigna los tres estados a su registro de visualización de objetos del libro y XLSX los asigna a workbookPr.showObjects; los valores ausentes toman xlsodmShowAllcomo predeterminado, las cargas útiles reservadas del formato clásico que no se modifican y los tokens XLSX no admitidos permanecen sin pérdidas, y las asignaciones explícitas emiten solo valores canónicos
El visor renderiza el modo placeholder como cajas ligeras que contienen el tipo de objeto, el nombre, el texto y el texto alternativo disponibles; los exportadores conservan los objetos completos de forma predeterminada, mientras que establecer ExportObjectPlaceholders solicita la misma política de bajo coste sin decodificar cargas de imágenes ni construir escenas de gráficos
xlsodmHideAll impide la colección de dibujos y la expansión de rangos dirigida por objetos antes de que comience el renderizado; la conversión de libros transporta los tres estados, ODS escribe dibujos completos para el modo placeholder y omite la salida de dibujos y de medios para el modo hide-all, y los fondos de hojas de cálculo permanecen independientes

Valores e instantáneas de calibración de renderizado

TXLSRenderCalibration = record
  WidthCorrection: Double;
  HeightCorrection: Double;
  LineSpacing: Double;
  CellMarginFactor: Double;
  ScreenScaling: Integer;
  MeasurementDpi: Integer;
end;

function XLSDefaultRenderCalibration: TXLSRenderCalibration;
function XLSValidateRenderCalibration(const AValue: TXLSRenderCalibration;
  out AInvalidField: TXLSRenderCalibrationField): Boolean;
      
Los valores predeterminados son 1, 1, 1, 1, 100y 96; las correcciones de ancho y alto deben ser mayores que cero y menores que dos, el interlineado está acotado a (0, 4], los márgenes de celda a [0, 4], el escalado de pantalla a [100, 500] por ciento y los DPI de medición a [36, 2400]
Los libros XLS clásicos y XLSX exponen los mismos miembros RenderCalibration, CaptureRenderCalibrationy ResetRenderCalibration ; la asignación del registro completo valida antes de la mutación y cada captura devuelve una instantánea de valores independiente e inmutable por convención para una operación de renderizado

Geometría de renderizado y medición de fuentes

TXLSRenderGeometryBackend = (xlsrgbAutoFit, xlsrgbPagination, xlsrgbPdf,
  xlsrgbSvg, xlsrgbBitmap, xlsrgbPrintPreview, xlsrgbViewer, xlsrgbHtml);

TXLSRenderFont = record
  Name: WideString;
  Size: Double;
  Styles: TXLSRenderFontStyles;
  Charset: Byte;
end;

function CreateXLSRenderGeometry(
  const ACalibration: TXLSRenderCalibration;
  AWorkbookGeneration: UInt64;
  ABackend: TXLSRenderGeometryBackend;
  ACacheCapacity: Integer = 4096): IXLSRenderGeometry;

property TXLSHTMLExport.RenderGeometry: IXLSRenderGeometry;
property TXLSXHtmlExportSession.RenderGeometry: IXLSRenderGeometry;
      
IXLSRenderGeometry posee una calibración inmutable, una generación de libro, una identidad de back-end, un servicio de medición y una caché acotada de métricas local de la operación; CreateXLSRenderGeometry usa GDI, mientras que CreateXLSPortableCairoRenderGeometry de lxPortableCairo usa bytes de fuente explícitos con FreeType/HarfBuzz en Linux o macOS nativos; MeasureText devuelve el ancho en píxeles, el alto, el alto de línea, el ascenso, el descenso y el número de líneas, mientras que MaximumDigitWidthPixels, ColumnWidthToPixels, PixelsToColumnWidth, PointsToPixels, PixelsToPointsy UsableCellWidthPixels proporcionan las conversiones de geometría compartidas
La identidad de la caché incluye el back-end, la generación del libro, todos los valores de calibración, el nombre de la fuente, el tamaño exacto, los estilos, el juego de caracteres, el ancho de ajuste y el texto; la corrección de ancho y alto se aplica una vez durante la medición del texto, el interlineado solo afecta al alto multilínea, la corrección del margen de celda solo afecta al ancho de texto utilizable y el escalado de pantalla solo afecta a la emulación del ancho máximo de dígito para anchos de columna implícitos
El AutoFit de XLS clásico y XLSX captura un servicio para cada operación pública, incluida la medición de rangos combinados y de MarkSheet en dos fases, mientras que TXLSPaginationModel.Build captura un servicio para el RenderBackendseleccionado; los puntos de entrada de PDF, SVG, mapa de bits, vista previa de impresión, visor de libros y HTML seleccionan su propio back-end antes de la salida, cambiar la calibración del libro no puede mutar una instantánea existente y la salida no escribe las dimensiones de la hoja de cálculo
Las llamadas directas HTML a libros, hojas de cálculo y rangos capturan un servicio xlsrgbHtml nuevo, mientras que una TXLSXHtmlExportSession incremental captura una vez en BeginExport y reutiliza esa instantánea para todas las hojas; ambos exportadores exponen el servicio retenido a través de RenderGeometry para diagnósticos de calibración y de caché
Las propiedades de solo lectura de IXLSRenderGeometry properties WorkbookGeneration, CacheCapacityy CacheEntryCount informan de la generación enlazada y el llenado de la caché para diagnósticos, y ImplicitWidthMaximumDigitWidthPixels devuelve la medición del ancho de dígito que subyace a la emulación de anchos de columna implícitos
MeasureText rellena un registro TXLSRenderTextMetrics (ancho en píxeles, alto, alto de línea, ascenso, descenso y número de líneas) a partir de un TXLSRenderFont cuyo miembro Styles es un conjunto de marcas TXLSRenderFontStyle (negrita, cursiva, subrayado, tachado)

Importación, generación de código, comparación y supervisión

TXLSHTMLImportLoadFromHTML importan contenido de tablas HTML de un flujo o archivo a una hoja de cálculo, con coordenadas de inicio, selección de tabla y separador decimal opcionales
TXLSCodeGenLanguage (tipo TlxCodeGenLanguage: lcgDelphi o lcgCppBuilder) selecciona el dialecto fuente de las sentencias generadas, GenerateToList escribe el código de libro generado en una lista de cadenas, y TlxCodeGenOptions amplía la salida con combinaciones de celdas, anchos de columna o formatos numéricos (cgoMerges, cgoColumnWidths, cgoNumberFormats; las hojas y las celdas siempre se emiten)
TXLSXWorkbookCompareCompare compara celdas almacenadas tipadas, texto de fórmulas, presencia de hojas y combinaciones; Options añade cachés de fórmulas, estilos base de celda y geometría de filas o columnas, SetNumericTolerance configura la igualdad numérica, y Count, Diffy Report exponen los resultados ordenados; vea comparación de libros
TXLSFileMonitorIntervalMs selecciona el intervalo de sondeo y SynchronizeEvent selecciona la entrega sincronizada de devoluciones de llamada; un controlador de OnFileChanged puede desactivar o destruir el monitor, o cambiar FileName para empezar a vigilar otro archivo
TXLSCSVLoader and TXLSCSVSaverEl loader analiza texto delimitado en una cuadrícula en memoria de Variants — ParseFile y ParseStream rellenan la cuadrícula, y CellValue, RowCounty ColCount la leen de vuelta — con separador (ValueSeparator) y codificación (TXLSCsvEncoding: ANSI del sistema, UTF-16, UTF-8) autodetectados, y una promoción de tipos opcional controlada por DetectTypes y por entradas ColumnTypes por columna (TXLSCsvColumnType: auto, text, number, date, boolean, skip); SkipRows, AutoTrim, LocaleTolerantNumbersy FieldWidths refinan el manejo de ancho fijo y de configuración regional. TXLSCSVSaver.SaveAs escribe la cuadrícula de vuelta con entrecomillado RFC 4180, y QuoteAllStrings fuerza el entrecomillado; TXLSTSVSaver deriva del saver para la salida separada por tabuladores

Comparación de libros

TXLSXWorkbookCompare de lxCompare compara dos instancias de TXLSXWorkbook sin recalcular fórmulas ni modificar ninguno de los dos libros; las hojas se emparejan por nombre sin distinción de mayúsculas, y cambiar solo el orden de las hojas no produce ninguna diferencia

El valor predeterminado de Options está vacío y ambas tolerancias son cero por defecto; la comparación predeterminada reporta hojas añadidas o eliminadas, celdas almacenadas añadidas o eliminadas, valores literales tipados modificados, texto de fórmulas modificado y rangos combinados añadidos o eliminados

La comparación de literales distingue números, texto, valores Boolean, fechas, errores y blancos: el número 1 difiere del texto '1', un Boolean difiere de su grafía textual, las fechas conservan su propio tipo y los errores se comparan por su código de error almacenado; los tipos de almacenamiento numérico con valores iguales comparan igual, mientras que los valores Int64 distintos siguen siendo distintos durante la comparación exacta

lcoFormulaCachedResultsPara celdas con el mismo texto de fórmula, compara el resultado en caché existente y distingue una caché ausente o invalidada de una caché disponible; las cachés cargadas y calculadas con el mismo valor tipado comparan igual
lcoCellStylesCompara los estilos base resueltos en las coordenadas coincidentes de celdas almacenadas, incluidas fuentes, rellenos, degradados, bordes, alineación, formatos numéricos y protección de celda; el orden de inserción del pool de estilos no relacionado no crea diferencias, y los colores de tema se resuelven contra el tema actual de cada libro
lcoAxisGeometryCompara los altos de fila efectivos, los anchos de columna, las banderas de ocultación, los niveles de esquema, las banderas de colapso y los valores predeterminados de la hoja; un tamaño explícito igual al predeterminado efectivo compara igual que un tamaño implícito
lcoDefinedNamesCompara los nombres con ámbito de libro y de hoja, sus definiciones de fórmula, visibilidad, comentarios y banderas de macro; el ámbito sigue a los nombres de hoja, y el orden de inserción no crea diferencias
lcoDataValidationsCompara las definiciones de validación en el orden almacenado, incluidos los rangos destino normalizados, las fórmulas, los operadores, los prompts, los mensajes de error y las banderas de control; cambiar el orden de los rangos destino dentro de una definición no crea una diferencia
lcoConditionalFormatsCompara las definiciones de formato condicional en el orden almacenado, incluidas la prioridad efectiva, el comportamiento stop-if-true, los rangos destino, las fórmulas, los estilos diferenciales y los ajustes admitidos de escala de color, data bar e icon set; los identificadores del pool de estilos y de la paleta indexada se resuelven a sus valores semánticos
lcoTablesEmpareja las tablas por nombre y compara rangos, encabezados, totales, ajustes de estilo, comentarios, nombres de columna, etiquetas, fórmulas, banderas de array, nombres únicos, nombres de conexión, criterios de filtro y condiciones de ordenación; los IDs de tabla, de columna y el orden de inserción no crean diferencias, mientras que los IDs de estilo diferencial de filtro de color y de ordenación se resuelven a apariencia
lcoDrawingsCompara las definiciones tipadas de dibujo en el orden de dibujo, conservando el orden hijo-grupo y el orden de grupos de trazado del gráfico; las definiciones canónicas admitidas cubren imágenes, cuadros de texto, gráficos, grupos, vistas tipadas completas de slicers y vistas tipadas de timelines, y los nodos de dibujo opacos o no admitidos elevan EXLSSemanticSnapshot
lcoBlankStyleRegionsCompara los estilos base resueltos en las coordenadas sin celda almacenada en ninguno de los dos lados, incluidos los valores predeterminados de la hoja y las superposiciones virtuales de estilo; las subdivisiones de rectángulo equivalentes comparan igual, y los cambios adyacentes iguales se fusionan en rectángulos sin materializar celdas
lcoRichTextRunsCompara las fuentes y el texto efectivos de los runs en las celdas de texto almacenadas coincidentes, hereda la fuente base para las propiedades de run omitidas, ignora los runs vacíos y fusiona los runs adyacentes con fuentes efectivas iguales; el texto plano coincide con un run de texto enriquecido equivalente con la fuente predeterminada
lcoPivotTablesEmpareja las definiciones tipadas de tablas dinámicas por nombre y compara los enlaces de origen, el diseño, los campos, los miembros ordenados de la vista, las agregaciones de datos, los filtros, las referencias de agrupación, las definiciones calculadas, los estilos y las banderas de materialización nativa; los IDs de caché y de miembros compartidos se resuelven a identidades y valores tipados del origen
lcoPivotCachesEmpareja las definiciones tipadas locales de PivotCache por identidad de origen y compara los metadatos de refresco, los metadatos de campo, las etiquetas y rangos agrupados, los dominios desordenados de miembros compartidos y los valores tipados ordenados de los registros; los miembros numéricos, de texto, Boolean, de fecha, de error y vacíos siguen siendo distintos, las fechas conservan la precisión binary64, y los IDs de caché y el orden de ranuras de miembros compartidos no crean diferencias
lcoSlicerStateEmpareja las vistas y cachés de slicers nombradas, incluidos los enlaces a columnas de tabla o Pivot no OLAP, los nombres de tablas dinámicas conectadas, las selecciones tipadas de miembros, los ajustes de filtro cruzado y de ordenación, el título, la posición de desplazamiento, el diseño de columnas, las dimensiones, el estilo, las banderas de bloqueo y de título, y la geometría de ancla; los enlaces resuelven IDs de tabla, columna, hoja y caché
lcoTimelineStateEmpareja las vistas tipadas de timelines nombradas y las cachés locales no OLAP, incluidos los enlaces de campo de origen y de tablas dinámicas conectadas, la selección de fechas activa, el título, el nivel y los límites de la hoja; las selecciones inactivas omiten los extremos de fecha sin usar

Options es de tipo TlxCompareOptions, un conjunto de TlxCompareOption; activar una opción añade sus diferencias a la comparación predeterminada

SetFeatureLimits(MaxBytes, MaxItems) valida ambos límites positivos antes de cambiar cualquiera de los dos ajustes; MaxFeatureBytes es 64 MiB por defecto y MaxFeatureItems es 1,000,000 por defecto, y los setters individuales conservan la misma validación atómica

Los presupuestos de funciones cubren los bytes canónicos separados agregados y las entradas contadas de ambos libros, incluidos los runs de texto enriquecido, los nodos XML de filtro, los campos de Pivot, los miembros de dominio y los valores de registro, y las conexiones de slicers o timelines; los lectores comprueban los recuentos y las entradas de texto grandes antes de construir XML nativo, exigen flujos de salida acotados y elevan EXLSXSemanticBudget cuando se supera un límite

SetNumericTolerance(AbsoluteTolerance, RelativeTolerance) valida ambos argumentos antes de cambiar cualquiera de los dos ajustes; ambos deben ser finitos y no negativos, y los setters individuales AbsoluteTolerancey RelativeTolerance usan la misma validación

Los valores literales numéricos y de caché numérica comparan igual cuando su diferencia absoluta es como máximo AbsoluteTolerance o su diferencia relativa al mayor valor absoluto es como máximo RelativeTolerance; un umbral de cero conserva la igualdad exacta, el cálculo relativo evita el desbordamiento para valores opuestos extremos, y la tolerancia no fuerza texto ni se aplica a fechas, estilos o geometría

LeftNamey RightName fijan nombres de visualización opcionales que usan las líneas de Report, con lefty right por defecto; los nombres afectan solo al informe, no al emparejamiento de hojas ni a la comparación

Comparer := TXLSXWorkbookCompare.Create;
try
  Comparer.Options := [lcoFormulaCachedResults, lcoCellStyles,
    lcoAxisGeometry];
  Comparer.SetNumericTolerance(0.001, 0.000001);
  DifferenceCount := Comparer.Compare(LeftWorkbook, RightWorkbook);
  for I := 0 to DifferenceCount - 1 do
  begin
    Entry := Comparer.Diff(I);
    ReportLines.Add(Entry.Describe);
  end;
finally
  Comparer.Free;
end;

Compare devuelve el recuento de diferencias, Count lee ese recuento después, y Diff(Index) usa indexación de base cero para devolver un TlxCompareDiff propiedad del comparador; retenga el comparador mientras lee sus entradas y vuelva a adquirir las entradas tras otra comparación correcta

Cada entrada proporciona Kind, Sheet, Rowy Col de base uno cuando procede, Ref, LeftText, RightTexty los valores tipados LeftKind / RightKind; TlxCompareValueKind contiene lcvNone, lcvBlank, lcvNumber, lcvText, lcvBoolean, lcvDateTime, lcvErrory lcvFormula, y lcvNone se usa para un lado ausente o una diferencia sin valor

TlxCompareKind conserva lckSheetAdded, lckSheetRemoved, lckCellAdded, lckCellRemoved, lckValueChanged, lckFormulaChanged, lckMergeAddedy lckMergeRemoved, y añade lckFormulaCacheChanged, lckStyleChanged, lckRowGeometryChangedy lckColumnGeometryChanged

Las diferencias de estilo transportan huellas canónicas estables del estilo en LeftTexty RightText; las diferencias de geometría transportan el tamaño, estado oculto, de esquema y de colapso comparados, con Ref identificando el intervalo contiguo del eje afectado, Row fijado a su primera fila y Col a cero para filas, o Col fijado a su primera columna y Row a cero para columnas

Las diferencias de funciones usan lckDefinedNameChanged, lckDataValidationChanged, lckConditionalFormatChanged, lckTableChanged, lckDrawingChanged, lckPivotTableChanged, lckPivotCacheChanged, lckSlicerChanged o lckTimelineChanged; Change es lccChanged, lccAdded o lccRemoved, y cada lado presente transporta su huella canónica de definición mientras que un lado ausente transporta una cadena vacía

lckRichTextChanged identifica una definición de run modificada en su coordenada de celda y transporta huellas canónicas de run en LeftTexty RightText; la tolerancia numérica se aplica a literales de celda y cachés de fórmulas, mientras que las definiciones tipadas de funciones se comparan exactamente

Las referencias de funciones identifican nombres con ámbito o nombres de tabla, o usan posiciones de secuencia de base uno para definiciones de validación, formato condicional y dibujo; insertar o mover una función ordenada puede cambiar varias posiciones, mientras que las entradas de nombres a nivel de libro tienen una Sheet vacía

lckBlankStyleRegionChanged identifica un rectángulo en blanco modificado mediante Row, Col, LastRowy LastCol inclusivos, y su Ref A1; las coordenadas almacenadas las maneja la comparación ordinaria de celdas y lcoCellStyles, así que active ambas opciones de estilo para inspeccionar juntas las celdas almacenadas y las áreas en blanco

Describe formatea una entrada, mientras que Report(List) anexa las entradas formateadas a un TStrings propiedad del llamador; un cambio de valor tipado incluye etiquetas de tipo cuando los tipos difieren, y los resultados se ordenan por nombre de hoja, fila, columna, tipo de diferencia y referencia, no por el orden de inserción de celdas

La comparación retiene leases de lectura, recorre las celdas almacenadas mediante instantáneas separadas de cursor y conserva el almacenamiento empaquetado; la geometría particiona los límites de metadatos almacenados y los tramos compactos de filas repetidas, mientras que la comparación de estilos en blanco barre los límites de rectángulos activos y de celdas almacenadas sin escanear una rejilla rectangular de un millón de filas; el trabajo crece con las funciones almacenadas, las intersecciones de regiones y las diferencias reportadas

Una comparación fallida preserva el resultado correcto anterior; la asignación de una tolerancia no válida también preserva los ajustes y el resultado existentes, mientras que pasar un libro nil borra el resultado y devuelve cero

Esta comparación cubre el contenido de celdas almacenadas de la fachada XLSX y las definiciones tipadas seleccionadas de funciones; la grafía de fórmulas de nombres, validaciones, formatos condicionales, tablas y gráficos se normaliza mediante el analizador semántico de fórmulas, mientras que las fórmulas calculadas de Pivot conservan su texto de definición almacenado

Los filtros de tabla aceptan las formas admitidas personalizadas, de lista de valores, de grupo de fechas, de color, de icono, dinámicas y de recuento superior, y las condiciones de ordenación; las columnas de filtro independientes y las entradas de conjuntos de valores normalizan su orden, los valores predeterminados Boolean y las grafías numéricas se normalizan, y el orden de las condiciones de ordenación sigue siendo significativo

La comparación tipada de Pivot, slicers y timelines resuelve los orígenes locales de hoja admitidos y los enlaces no OLAP sin refrescar ni evaluar disponibilidad; las pistas de disponibilidad nativas de slicers son metadatos de visualización derivados, mientras que las selecciones de miembros y los metadatos nativos de ordenación reconocidos sí se comparan

Las propiedades nativas opacas de dibujo, los modelos binarios incompletos de Pivot, los orígenes externos u OLAP de Pivot, los registros suplementarios en bruto de tablas dinámicas y el XML de extensión, el XML de filtro desconocido, y los atributos o hijos de extensión de slicers o timelines no modelados elevan EXLSSemanticSnapshot; la preservación de esos datos no implica equivalencia semántica

Las funciones importadas seleccionadas de tablas dinámicas y PivotCache también validan el XML nativo preservado antes de comparar la proyección tipada, incluidos los metadatos anidados de campo y los registros de caché; los namespaces, atributos, hijos y cargas de extensión desconocidos fallan explícitamente dentro de los mismos límites cooperativos de funciones, mientras que los enlaces modelados de caché de slicer siguen admitidos

TSimpleDomNode.RawName expone el QName original del elemento junto al Name normalizado por el lector, lo que permite una inspección sensible a namespaces sin cambiar la coincidencia de nombres existente del analizador

Los ajustes del libro y los metadatos opacos del paquete quedan fuera de la comparación; la comparación de estilos base no evalúa la apariencia de formatos condicionales ni de estilos de tabla, y la comparación de dibujos preserva los límites admitidos de imagen, cuadro de texto, gráfico y grupos ordenados de la instantánea semántica

Propiedades efectivas de texto enriquecido

TMsoFbtOpt.StoredPids devuelve los identificadores de propiedades OfficeArt almacenados en orden de clasificación, mientras que TMsoFbtSp.PersistentFlags expone las banderas nativas de la forma sin asignar propiedades ni anclas

TMsoShapeContainer.HasPreservedObjectData identifica los bytes de cola OBJ retenidos; HasOrdinaryEmbeddedPictureObjectData comprueba que las colas de imagen contengan solo registros reconocidos de formato de portapapeles y de banderas de imagen a cero, y rechaza los registros enlazados o desconocidos sin copiar la carga útil

TMSOShapeTextBox.HasValidTextRuns comprueba los límites de runs TXO almacenados y los campos reservados sin crear runs; TMsoDrawing.HasUnmodeledAppearance identifica los datos nativos de dibujo que el analizador tipado omite, lo que permite que la captura rechace explícitamente la apariencia sin resolver

TXLSXRichTextRun.BoldSet, ItalicSet, StrikethroughSet, UnderlineSet, VertAlignSety ColorSet distinguen las propiedades de fuente heredadas de las invalidaciones explícitas, incluidas las banderas false, none, baseline y los colores automáticos; los setters marcan la propiedad como explícita incluso cuando su valor iguala el predeterminado inicial del run nuevo

TXLSXRichText.HasUnsupportedAppearance reporta las propiedades nativas enriquecidas que el modelo tipado de runs no puede representar; la captura portable y la comparación efectiva de texto enriquecido rechazan esos runs explícitamente, mientras que las propiedades de run compartidas/inline admitidas y el espacio en blanco conservan su semántica importada

La comparación efectiva de texto enriquecido aplica las invalidaciones false explícitas antes de fusionar los runs adyacentes iguales; las propiedades heredadas y las borradas explícitamente siguen siendo distintas durante la deduplicación de cadenas compartidas y los round-trips XML admitidos

TXMLReader.ResolveNamespaceUri(Prefix, Uri) resuelve el enlace de namespace en ámbito actual sin cambiar la posición del lector, devolviendo false cuando no existe enlace; un prefijo vacío solicita el namespace predeterminado, y los QNames en bruto siguen disponibles para una inspección sensible a namespaces

Los registros inmutables de rich/scene, la extensión de origen de captura y el contrato de transferencia HXRSNP02 se describen en Salida portable sin interfaz

Inspección separada de estilos y ejes

TXLSXWorksheet.ReadSemanticCellStyle(Row, Col) devuelve un TXLSSemanticCellStyle separado para coordenadas de base uno válidas, resolviendo estilos almacenados y empaquetados, valores predeterminados de hoja, superposiciones de estilo aplicables, formatos de fecha implícitos, colores indexados y colores de tema sin materializar celdas ni cambiar los pools de estilos; la llamada pública adquiere un lease de lectura y excluye las reglas de formato condicional y de estilo de tabla

TXLSXWorksheet.GetStoredAxisSpans(IsRow) devuelve TXLSXAxisSpans, un array de registros TXLSXAxisSpan con FirstIndexy LastIndex inclusivos de base uno; reporta las huellas de metadatos de tamaño, ocultación, esquema y colapso, conserva los tramos compactos de altos de filas repetidas y deja el valor predeterminado efectivo de la hoja disponible a través de sus propiedades ordinarias

Los tramos devueltos describen huellas de metadatos almacenados en lugar de una partición normalizada disjunta; las aplicaciones que comparan dos ejes pueden combinar sus límites primero y último, e inspeccionar luego el estado efectivo una vez por cada intervalo resultante

TXLSXWorksheet.GetStoredStyleRegions devuelve TXLSXStyleRegions separados con límites FirstRow, FirstCol, LastRowy LastCol inclusivos para las huellas compactas de formato virtual; esas huellas pueden solaparse, y quienes llaman leen su apariencia efectiva con ReadSemanticCellStyle

TXLSXWorkbook.ReadSemanticFeatures(Kind, Sheet, MaxBytes, MaxItems) devuelve entradas TXLSXSemanticFeatures separadas con una Key estable, bytes canónicos de Definitiony un ItemCount contado; los límites positivos opcionales son 64 MiB y 1,000,000 entradas por defecto

TXLSXSemanticFeatureKind contiene xlsxSemanticDefinedNames, xlsxSemanticDataValidations, xlsxSemanticConditionalFormats, xlsxSemanticTables, xlsxSemanticDrawings, xlsxSemanticPivotTables, xlsxSemanticPivotCaches, xlsxSemanticSlicers, xlsxSemanticSlicerCaches, xlsxSemanticTimelinesy xlsxSemanticTimelineCaches

Los nombres definidos y los tres tipos de caché usan ámbito de todo el libro y permiten una hoja nil; los demás tipos exigen una hoja perteneciente al libro, las reglas y los dibujos conservan su secuencia almacenada, y los arrays y búferes devueltos son copias propiedad del llamador; estos lectores adquieren leases de lectura y heredan la cobertura tipada y el comportamiento explícito de datos no admitidos descrito arriba

TXLSXWorksheet.ReadSemanticRichText(Row, Col, IncludePlainText, MaxBytes, MaxItems, ConsumedItems) devuelve bytes canónicos separados de runs para coordenadas de base uno, o un búfer vacío cuando no existe texto enriquecido e IncludePlainText es false; el ConsumedItems: PInteger opcional recibe el recuento de runs capturado, y la captura de texto plano conserva el almacenamiento empaquetado

TXLSPivotCacheField.GroupItemTypes[Index] expone el tipo tipado correspondiente a GroupItemLabels[Index] y rechaza un índice fuera del dominio de etiquetas agrupadas almacenado

Metadatos de fórmulas y devoluciones de llamada de consultas de Pivot

TXLSGetCellFormulaTexty TXLSCalculator.OnGetCellFormulaText leen el texto de expresión almacenado usando un SheetIndex de base uno y Row/Col de base cero, devolviendo lxOk o un código de error tipado y respetando la protección de fórmulas ocultas; TXLSGetPivotTabley OnGetPivotTable localizan una tabla prestada usando un SheetIndex de base uno y coordenadas de rango de base cero

Los motores de libros conectan estas devoluciones de llamada opcionales en contextos de cálculo normales, de solo lectura y aislados; las devoluciones de llamada no recalculan destinos, no refrescan orígenes de Pivot ni transfieren propiedad

TXLSPivotDataConstraint almacena un FieldName y un Item tipado, y TXLSPivotDataConstraints recopila pares campo/elemento; TXLSPivotTable.GetDataValue consulta un agregado visible admitido de una instantánea separada local de tabla/caché y IntersectsQueryRange usa límites de hoja de base uno que incluyen las celdas modeladas de filtro de informe

TlxPivotQueryBudget recibe estimaciones de trabajo y memoria de forma síncrona y devuelve si la evaluación puede continuar; EXLSPivotQueryBudgety EXLSPivotQueryUnsupported distinguen los límites agotados de los modelos de caché o agregado no admitidos

TXLSPivotCache.QueryModelIsComplete registra la disponibilidad de consulta decodificada con independencia de la completitud de la reproducción en bruto de BIFF; QueryRecordsValid expone la validez de los registros importados y SetQueryRecordValidity aplica la precedencia del lector de formatos sin refrescar los registros

Bytes explícitos de página de códigos

MiembroContrato
XlsEncodeCodePage(Text, CodePage, MaxBytes = -1)Devuelve un RawByteString con los bytes exactos en una página orientada a bytes explícita y distinta de cero, preserva los nulos embebidos, verifica la identidad del round-trip Unicode y eleva EConvertError para texto no representable; un MaxBytes no negativo conserva el prefijo de caracteres completos más largo que quepa, mientras que -1 deja la longitud sin acotar; la validación cubre el texto original antes del truncamiento
XlsDecodeCodePage(Bytes, CodePage)Devuelve un WideString desde la codificación explícita de bytes y preserva los nulos embebidos; las secuencias de bytes mal formadas siguen el comportamiento del decodificador instalado; la página 0 y la página UTF-16 1200 se rechazan porque esta API no infiere una configuración regional ANSI ni maneja un flujo de bytes UTF-16
TXLSBlob.GetCompressedUnicodeString(Index, Count)Devuelve unidades de código exactas del Unicode comprimido BIFF8 de U+0000 a U+00FF, preserva los nulos embebidos, valida el rango de bytes solicitado y no interpreta esos bytes mediante una página de códigos
TXLSBlob.AddRawStringAnexa los bytes codificados exactos sin una conversión de página de códigos de AnsiString y actualiza DataLength; una entrada vacía no anexa bytes
TXLSCalculator.CodePage, TXLSFormula.FCodePageSeleccionan la codificación explícita de bytes de fórmulas heredadas, con CP1252 por defecto; el libro clásico propietario sincroniza su calculadora al inicializarse o cuando se llama a SetCodePage
TXLSFontList.GetFont, TXLSNumFormatList.GetNumFormatBlob, TXLSStyles.GetStyleBlobEl argumento CodePage opcional es 1252 por defecto y codifica texto BIFF5; la salida BIFF8 sigue siendo Unicode
TMsoDrawing.StoreNotesEl argumento CodePage opcional es 1252 por defecto y codifica el texto de comentarios anterior a Unicode; el límite de tamaño del registro de comentario ordinario BIFF5 existente se mantiene; esto no añade campos de autor, texto enriquecido o geometría ausentes de ese formato de registro
TXLSCustomName.SetSourceDataLos argumentos opcionales FileFormaty CodePage identifican los bytes NAME en bruto importados y son xlExcel97 y 1252 por defecto; los registros en bruto se reutilizan solo cuando su formato y su codificación heredada coinciden con la salida solicitada
TXLSFormulatArrayItem.GetDataSize, TXLSFormulatArray.GetDataSize, TXLSFormulatArray.GetData, TXLSFormulatArrays.GetDataSize, TXLSFormulatArrays.GetData, TXLSCompiledFormula.GetExternalDataEl argumento ACodePage opcional es 1252 por defecto; el tamaño y la salida de arrays de cadenas heredados usan el mismo recuento de bytes codificados, mientras que las cadenas BIFF8 siguen siendo Unicode

Pase el RawByteString devuelto directamente a AddRawString o a una operación de flujo orientada a bytes; convertirlo a un AnsiString predeterminado puede recodificar sus bytes en sistemas FPC nativos

Nombres definidos clásicos y bloques de fórmulas de array

TXLSCustomName deferred compilationClearDefinition libera el AST compilado de RefersTo conservando la cadena de definición almacenada y cualquier byte NAME importado en bruto, Compile reconstruye el AST desde la definición almacenada e informa del éxito, y GetCompiledFormula recompila automáticamente, de modo que un nombre borrado se vuelve a resolver en su siguiente lectura; PeekCompiledFormula devuelve el AST actual sin disparar esa recompilación, y StoredDefinition expone el origen de la definición sin analizar
TXLSCustomName identity and flagsStoreIndex expone la posición de almacenamiento del nombre dentro de su colección, NameID su identidad numérica única en el libro tal como la usa el motor de cálculo, y IsHiddeny IsMacro leen y escriben las banderas hidden y macro del registro NAME de BIFF
TXLSFormulatArray.RowsCount, ColsCountInforman de las extensiones de filas y columnas del bloque de fórmula de array analizado; ambas empiezan en uno y acotan el dominio de elementos por celda que transportan los métodos de emisión

Pools clásicos de fuentes, formatos y estilos

TXLSFontList stored font attributesLas propiedades indexadas reflejan la clave de fuente almacenada en un índice de base cero de la lista: Name, Size, ColorIndex, Bold, Italic, Strikethroughy Underline se unen a OutLineFont, Shadow, SubScript, SuperScript, Familyy CharSet para inspección de solo lectura
TXLSNumFormatList.AddValue, FmtExistsAddValue registra una cadena de formato y devuelve su índice, mapeando las grafías de formatos integrados a sus ids canónicos y marcando los formatos de fecha y hora; FmtExists informa de si una cadena de formato personalizado ya está registrada
TXLSNumFormatList.IsDateFormat, IsDateFormatValueIsDateFormat informa de si el formato almacenado en un índice está marcado como formato de fecha o hora, mientras que IsDateFormatValue comprueba directamente una cadena de formato buscando tokens de fecha y hora
TXLSStyles.AddStyle, AddBuiltinStyleAddStyle registra un estilo de celda personalizado con nombre vinculado a un índice de registro XF, y AddBuiltinStyle registra un estilo de celda integrado por su id integrado junto con el nivel de esquema que usan los estilos de nivel de filas y columnas
TXLSStyles.BuiltinStyleNameFunción de clase que devuelve el nombre de visualización canónico de Excel para el estilo de celda integrado con ids de 0 a 53; los ids fuera de rango devuelven un nombre vacío, de modo que los escritores recurren a la forma de byte integrado en bruto

Aplicaciones auxiliares de paquetes y almacenamiento binario

TXLSXOpaquePackageLoadWorkbookXmlMetadata captura el estado XML de nivel de libro, MarkAllPartsClean restablece las marcas de modificación y WorkbookExtLstXml junto con WorkbookRootAttributesXml exponen los fragmentos XML del libro preservados; IsDiscardedPart informa de si un nombre de parte se eliminó mediante una operación de descarte como la limpieza de complementos web
TXLSFileStorageLoad, LoadFolder, Writey WriteFolder transfieren contenido de archivos compuestos; Child y Count enumeran las entradas secundarias, cada una un TXLSFileItem — un nodo de almacenamiento con nombre cuya subclase TXLSFileStream transporta los bytes almacenados como un TXLSBlob con DataSize informando de la longitud de la carga útil
TXLSBlobAdd anexa otro blob, mientras que AddByte, AddWord, AddLong, AddDouble, AddStringy AddWideString anexan valores con tipo; CopyData, CopyMem, FillByte, Write, Clear, Resety Dump gestionan el contenido; Buff y DataLength exponen el almacenamiento
TXLSBlobListAppend, AppendList, CopyDatay Write combinan o emiten entradas; Entries y TotalSize exponen el estado de la lista
TXLSWideStringBuilderAddString anexa texto y Length informa del recuento de caracteres acumulado

Novedades de dibujo y del visor de libros

TXLSFillFormatPictureFill configura un relleno de forma basado en imagen, mientras que FillType selecciona el tipo de relleno (sólido, degradado, imagen o textura preestablecida) que emite el escritor
TXLSShapesAddScrollBar y AddSpinner crean controles de formulario — los objetos TXLSScrollBar y TXLSSpinner devueltos exponen la geometría del control y la celda vinculada, y el spinner añade los límites de paso Min, Maxe Inc —, mientras que RegisterScrollBar y RegisterSpinner registran controles cargados de un libro
TXLSWorkbookViewerCanUndo y CanRedo informan de la disponibilidad del historial de transacciones; ClearSelectedRange, CopySelectedRange, PasteSelectedRangey PasteText operan sobre el rango seleccionado, mientras que ReferencePickMode habilita la selección interactiva de referencias de celdas o rangos
TXLSWorkbookEditHistoryEl motor de transacciones de contenido sin interfaz de lxWorkbookViewer vincula un libro clásico o XLSX prestado y proporciona preflight de protección de rangos, copia y pegado de texto Unicode, borrado de rangos y una transacción de undo/redo por operación; vea transacciones de edición sin interfaz
TXLSCellContentSnapshotAmbas clases de hojas de cálculo exponen ReadCellContent(Row, Col)y RestoreCellContent(Snapshot) para la captura y restauración separadas de contenido nativo en coordenadas de base uno de la hoja de origen; la captura no evalúa fórmulas, no crea celdas ausentes ni materializa almacenamiento empaquetado, y la carga útil inmutable NativeData conserva el texto enriquecido, las cachés de fórmulas y el estilo de celda; la restauración directa es una operación de bajo nivel cuyo llamador debe validar la protección y los límites estructurales

Paginación, salida de imágenes e impresión

XLSValidateCachedChartSceneModel, XLSRecordCachedChartSceneHacen el preflight de los metadatos de gráficos en caché sin resolver celdas y registran primitivas acotadas de vectores y texto para un gráfico separado en lxPortableChart, devolviendo TXLSPortableSceneObjects y la contabilidad de elementos, bytes y texto; los puntos de entrada de lxPagination conservan la misma implementación compartida para los llamadores de Windows existentes; el subconjunto actual cubre gráficos ordinarios de columnas, barras, líneas, dispersión, circular, de anillo y de área de una sola serie con un grupo de trazado primario, y el registro exige metadatos nativos validados, puntos de caché finitos y estrictamente ordenados, y un modelo de gráfico sin adjuntar; vea registro de gráficos en caché
TXLSGraphicsBackendDrawTiledImage pinta un fondo de hoja repetidamente por la región de página recortada
TXLSPaginationModelCompactRangeMode, IncludeDrawings, IncludeGridlines, IncludeCellBordersy PaintPageBackground controlan el contenido de la página; RenderDPI, RenderColorModey RenderSession exponen la resolución de salida, el manejo del color y la sesión de renderizado activa
TXLSCellImageExporterMeasure calcula las dimensiones en píxeles para rangos clásicos o XLSX; ImageFormat, JpegQuality, MaxPixels, MaxBytes, IncludeObjects, IncludeGridlines, IncludeCellBorders, BackgroundColor, TransparentBackground, BeforePaint, AfterPainty PaginationModel configuran el renderizado y permiten observarlo
TXLSPageImageExporterBeforePaint, AfterPaint, MaxPixels, MaxBytes, BackgroundColory TransparentBackground aplican los mismos enlaces de pintado y límites de seguridad de salida a la exportación de imágenes paginadas
TXLSPrintDocumentPrintWorksheet, PrintWorkbooky PrintAllVisibleSheets envían contenido clásico o XLSX a la impresora VCL; FirstPage, PrintRangeOnly, Collate, Copies, OnBeforeNewPagey OnAfterGeneratePage controlan el trabajo de impresión

Modelos de gráficos clásicos y objetos de gráfico de hojas de cálculo

TXLSXChartSeriesLineVisible, LineColorRGBy LineWidthPoints describen un trazo de serie independiente; LineStyleSet, LineColorSety LineWidthSet conservan los ajustes explícitos, y EffectiveLineVisible resuelve la convención heredada de solo relleno; MarkerFillSety MarkerBorderSet distinguen el negro explícito de los colores automáticos de marcador, mientras que la grabación portable de líneas y dispersión admite diámetros de círculo de 2 a 72 puntos; los setters de color y ancho validan antes de mutar y obedecen los leases de lectura del libro
TXLSChartSeriesAddTrendline y AddErrorBars crean anotaciones de serie con tipo, mientras que TrendlineCount y ErrorBarCount informan de los tamaños de sus colecciones; el campo MarkerSize existente conserva los twips BIFF en bruto, mientras que el getter de solo lectura MarkerSizePoints devuelve ese valor dividido por 20, incluidos los tamaños fraccionarios en puntos
TXLSChartAxisHasAxcExtFlag comprueba una marca AXCEXT cruda sin exigir que quien la llama decodifique la máscara de bits
TXLSChartModelAxisGroupCount informa del número de grupos de ejes primario y secundario decodificados del gráfico
TXLSCustomChartAddAreaData añade un elemento de área preconstruido para el reenlace de fórmulas en el guardado, y ApplyDateAxisModel aplica un modelo de eje de fechas con tipo a los registros crudos del gráfico; GetStoredRecordInfo lee un id de registro de base cero y un recuento de bytes sin asignación, mientras que ReadStoredRecord(Index, MaxBytes) comprueba el límite de bytes antes de devolver bytes separados en TXLSChartStoredRecord, sin evaluar fórmulas ni modificar cachés
TXLSWorksheetAddChartObject ancla un marco de gráfico en la hoja de cálculo y lo conecta al constructor de gráficos compartido
TXLSXChartLayoutResolverTryResolve resuelve un rectángulo de diseño con validación de tamaño opcional y ResolveChart calcula los rectángulos de gráfico, título, leyenda, trazado y ejes

Modelo de decodificación de gráficos con tipos

El estado decodificado del gráfico se expone como registros y enumeraciones sencillas, de modo que el código de inspección nunca tenga que recorrer registros BIFF crudos: TXLSChartInfo transporta el resumen del gráfico decodificado con TXLSChartTypeFamily (cfBar, cfLine, cfPie, cfArea, cfScatter, cfRadar, cfDoughnut, cfSurface, cfBubble), cada serie informa de TXLSChartSeriesType, y TXLSChart3DState junto con TXLSChart3DInfo describen las vistas tridimensionales. TXLSChartAxisType (catCategory, catValue, catSeries, catDate) y TXLSChartLegendPosition clasifican ejes y leyendas, mientras que el modelo de eje de fechas usa TXLSChartDateUnit (xcduDays, xcduMonths, xcduYears) y TXLSChartDateValues. TXLSCustomChart expone el modelo decodificado a través de TXLSChartInfo; las anotaciones de líneas de tendencia y de barras de error son objetos con tipo (TXLSChartTrendline, TXLSChartErrorBars) accesibles desde cada serie

Registros de creación de gráficos

La creación de hojas de gráfico y del constructor acepta registros sencillos en lugar de grafos de objetos: TXLSChartTrendlineInfo, TXLSChartErrorBarsInfo, TXLSChartDataLabelsInfoy TXLSChartSeriesStyleInfo rellenan las entradas de serie que se pasan a TXLSWorksheets.AddChartSheet y al constructor de gráficos compartido, y TXLSPivotChartInfo describe el encuadre de gráfico dinámico que se usa cuando un gráfico se vincula a una tabla dinámica

Inspección de rellenos de gráficos clásicos

TXLSCustomChart.GetChartModel decodifica las tablas de propiedades OfficeArt nativas admitidas y las tablas de propiedades terciarias de los registros GelFrame, incluidas las propiedades que siguen a entradas de carga útil compleja; la representación del constructor existente sigue admitida, y los límites de tabla mal formados dejan el relleno tipado previo sin cambios y reportan el registro no admitido

La inspección del gráfico valida la carga útil completa de texto y anotación almacenada antes de añadir estado tipado: los nombres de línea de tendencia o los separadores de etiquetas de datos truncados reportan su id de registro a través de _UnsupportedSemanticRecordID, mientras que las cabeceras SeriesText nulas o demasiado cortas reportan ese registro como no admitido tanto para BIFF5 como para BIFF8; una extensión declarada de texto de serie que excede su carga útil eleva EReadError, libera el modelo parcial y deja los registros del gráfico almacenados sin cambios

El getter de marcador y la inspección de rellenos preservan el almacenamiento en bruto del gráfico; la ruta de captura de apariencia declarada valida por separado los gráficos núcleo admitidos, mientras que las sumas de verificación de título enriquecido o de extensiones de forma sin verificar siguen sin estar admitidas

Lectores acotados de gráficos, cadenas y fuentes almacenados

TXLSChartStoredBytes es un array de bytes separado y TXLSChartStoredRecord contiene RecordIdy Data; estos lectores inspeccionan el almacenamiento de origen retenido sin crear un modelo de gráfico decodificado ni evaluar fórmulas

TXLSCustomChart.GetStoredRecordInfoDevuelve un id de registro y una longitud de bytes contada para un índice de registro de base cero sin copiar su carga útil
TXLSCustomChart.ReadStoredRecordCopia una carga útil tras validar el índice y el MaxBytes no negativo; el límite de bytes predeterminado es High(Int64)
TXLSCustomChart.ReadStoredFormulaLeafInfoInspecciona una hoja BRAI almacenada coherente usando la calculadora de origen exacta y cuotas no negativas de bytes y texto; las calculadoras ajenas o los propietarios de traducción devuelven una hoja no admitida, y AllowUnboundBiff es False por defecto
TXLSCustomChart.ReadStoredFormulaLiteralDevuelve un literal separado solo tras las mismas comprobaciones de procedencia y cuota; una hoja no admitida eleva EInvalidOperation
TXLSCustomChart.SourceBiffVersion, SourceCodePageProcedencia de solo lectura de los registros de gráfico retenidos
TXLSStringTable.GetStoredStringLength, ReadStoredStringCuenta el almacenamiento UTF-16 existente usando la identidad de cadena de base uno de la tabla, y copia solo cuando la cuota no negativa de caracteres la cubre; las identidades no válidas y el almacenamiento UTF-16 incompleto se rechazan
TXLSFontList.GetStoredNameLength, ReadStoredNameComprueba la clave de fuente almacenada en el índice de base cero de la lista antes de contar o copiar su nombre bajo una cuota no negativa de caracteres
TMsoFbtOptItem.HasStoredUnicodeStringComprueba los metadatos almacenados acotados de cadena Unicode compleja sin materializar una cadena
TMsoShapeContainer.HasOrdinaryChartObjectDataComprueba el tipo de objeto de gráfico almacenado, la identidad de objeto distinta de cero, las banderas admitidas y la ausencia de datos de cola de objeto desconocidos

Mantenimiento de la tabla de cadenas compartidas y emisión de SST

TXLSStringTable de lxStringTable respalda las cadenas compartidas del libro clásico; los miembros de abajo cubren el registro del lado del lector, el mantenimiento de ranuras y la emisión SST en bruto para guardados round-trip

KeyExists, AddWithExtrasKeyExists informa de si una cadena ya ocupa una ranura; AddWithExtras es el compañero de Add del lado del lector que adjunta la carga útil en bruto rgRun de texto enriquecido y rgExtRst fonética a la entrada sin elevar su recuento de referencias, porque cada celda que la referencia restaura luego el recuento mediante la ruta de adición normal
Replace, ReplaceIndexReplace suelta una referencia en la ranura antigua, liberándola cuando su recuento llega a cero, y vuelve a añadir el texto devolviendo la ranura resultante; ReplaceIndex mueve una referencia de la ranura antigua a la nueva sin copiar texto
AddSSTData, InitExtIndexAddSSTData emite la carga útil SST en bruto hacia la lista de blobs del escritor; la sobrecarga que toma una tabla de remapeo de runs de fuente reescribe cada índice de fuente de FormatRun a la salida ([MS-XLS] §2.5.129) para que los runs enriquecidos sigan la reordenación de fuentes del guardado, mientras que una tabla vacía mantiene la emisión literal heredada, y InitExtIndex numera los buckets de ExtSST sobre las ranuras vivas antes de la emisión
SlotCount, ExtIndex, ParsedExtSSTDsst, ParsedExtSSTItemCount, BiffSizeLimitSlotCount es el límite superior de base uno para iterar ranuras, con las ranuras eliminadas leyéndose vacías, ExtIndex resuelve una ranura a su número de bucket de ExtSST o -1 para una ranura no viva, ParsedExtSSTDssty ParsedExtSSTItemCount conservan los valores de cabecera EXT/SST importados, y BiffSizeLimit acota cada fragmento de registro emitido — el escritor clásico lo fija en 2080 bytes para BIFF5 y 8224 para BIFF8

Adjuntos PDF, firmas y exportación HTML

IXLSPDFAttachmentSourceWriteTo transmite los bytes del adjunto a la exportación PDF sin exigir que el exportador sea el propietario de los datos de origen
TXLSPDFExportAttachmentDuplicatePolicy selecciona el manejo de nombres duplicados, AttachmentSpoolThreshold controla el spooling de adjuntos, y DocumentLanguage escribe los metadatos de idioma del documento
TXLSPDFSignatureTextAlign, TextSize, TextColor, TextBoldy TextItalic configuran la apariencia visible de la firma
TXLSHTMLExportViewMode (tipo TXLSHtmlViewMode: vista actual o tabla completa de la hoja de cálculo) elige la presentación HTML, mientras que HotTrackTargets (conjunto de TXLSHtmlHotTrackTarget) y HotTrackColor configuran el resaltado interactivo de celdas y objetos
TXLSXHtmlExportOptionsViewMode, HotTrackTargetsy HotTrackColor proporcionan los controles equivalentes de exportación HTML de XLSX

Auditoría de cálculo y controles del libro

TXLSCalculationAuditReportTruncated informa de un truncamiento por límite de incidencias, StackTruncated informa del truncamiento de marcos de la pila de llamadas, y Issues indexa las incidencias de cálculo registradas
TXLSUserFunctionRegistryGeneration cambia cada vez que cambia el conjunto de funciones de usuario registrado, lo que permite invalidar los enlaces de fórmulas en caché
EXLSReportRecoverableDataCategory identifica la categoría de datos de informe recuperables que se presenta a quien realiza la llamada
IXLSWorkBookManualCalculationThreadCount limita el número de workers que usa el cálculo manual
TXLSXDataValidationHasUnknownImeMode informa de un valor de modo IME que HotXLS preservó pero no reconoce
TXLSXTableColumnCalculatedFormulaArrayRaw y ColumnTotalsFormulaArrayRaw exponen el texto original de las fórmulas array de las columnas de tabla

Compatibilidad del framing heredado de PivotCache

TXLSPivotCacheRawBucketIndex identifica la posición del subflujo de origen, RawFramingIsLegacy identifica un framing antiguo de HotXLS, RawModelIsComplete informa de si el modelo con tipo representa todos los registros, y CanUpgradeFraming informa de si la reemisión con tipo opcional es segura
TXLSPivotCacheStreamId expone la identidad del flujo de caché clásico, SourceDataType expone el tipo de datos de origen clásico, y RawHasStorageStream informa de si una caché cargada procedía de un flujo de almacenamiento de PivotCache independiente
TXLSWorkbookUpgradeLegacyPivotCacheFraming activa la reescritura de solo los framings de caché heredados de HotXLS cuyo modelo con tipo está completo; la reproducción cruda ordinaria de la caché sigue siendo el comportamiento predeterminado

StreamId se escribe como el registro SXStreamID ([MS-XLS] §2.4.303) y se repite como el campo SXDB de la cabecera idstm , con el que debe coincidir; SourceDataType se escribe como el registro SXVS ([MS-XLS] §2.4.317: $0001 hoja de cálculo, $0002 externo, $0004 consolidación, $0010 escenario) y se repite como el campo SXDB de la cabecera vsType , con el que debe coincidir. Las cachés construidas a partir de un rango de hoja de cálculo empiezan con el tipo de hoja de cálculo, mientras que las cachés leídas de vuelta desde un archivo conservan el valor que su subflujo transportaba, de modo que el escritor BIFF nunca deja un campo SXDB que nombre un registro que no emitió; RawHasStorageStream marca una caché cargada desde su propio flujo de almacenamiento, cuyo descriptor global del libro precede a los registros en caché

Integración con el portapapeles y opciones de pegado

TXLSPasteOption = (xlpoValuesOnly, xlpoInsertRows, xlpoInsertCols);
TXLSPasteOptions = set of TXLSPasteOption;

function XLSGetClipboardText: WideString;
function XLSSetClipboardText(const Text: WideString): Boolean;
function XLSSetClipboardTextAndHtml(const Text: WideString;
  const Html: AnsiString): Boolean;
function XLSBuildHtmlClipboard(const Html: AnsiString): AnsiString;
function XLSEncodeClipboardField(const Text: WideString): WideString;
function XLSClipboardHasText: Boolean;
function XLSParseClipboardGrid(const ClipboardText: WideString;
  Loader: TXLSCSVLoader): Boolean;
function XLSClipboardHasXmlSpreadsheet: Boolean;
function XLSGetClipboardXmlSpreadsheet: WideString;
function XLSParseXmlSpreadsheet(const XmlText: WideString;
  Loader: TXLSCSVLoader): Boolean;
function XLSClipboardHasBiff8: Boolean;
function XLSGetClipboardBiff8: AnsiString;
function XLSReadClipboardPasteData(out Biff8: AnsiString;
  out Text: WideString): Boolean;
function XLSSetClipboardBiff8(const Biff8: AnsiString;
  const Text: WideString; const Html: AnsiString = ''): Boolean;
      
Las opciones de pegado son compartidas por las sobrecargas PasteFromClipboard de ambas fachadas: xlpoValuesOnly conserva los valores en caché de las celdas de fórmula y omite formatos y combinaciones, mientras que xlpoInsertRows y xlpoInsertCols desplazan el contenido existente antes de que el bloque se asiente
Las aplicaciones auxiliares envuelven el portapapeles de Windows para la interoperabilidad de hojas de cálculo: las auxiliares de texto usan CF_UNICODETEXT (con fallback a CF_TEXT mediante la página de códigos ANSI actual), XLSSetClipboardTextAndHtml escribe texto y una carga HTML Format con estilo en una única transacción, XLSBuildHtmlClipboard calcula los desplazamientos de bytes CF_HTML para un documento o fragmento, y XLSEncodeClipboardField entrecomilla un campo separado por tabuladores. XLSParseClipboardGrid analiza el texto del portapapeles como filas separadas por tabuladores con el mismo sondeo de tipos que TXLSCSVLoader emplea para CSV, XLSParseXmlSpreadsheet ejecuta el mismo llenado del loader sobre una carga SpreadsheetML 2003 obtenida con XLSGetClipboardXmlSpreadsheet, y las auxiliares Biff8 detectan y leen el flujo nativo que el propio Excel deposita en el portapapeles, de modo que los datos pegados conservan valores, fórmulas y formato sin pérdida de texto
XLSReadClipboardPasteData captura el flujo Biff8 y el texto Unicode bajo un único bloqueo del portapapeles, de modo que un pegado nunca tiene que reabrir el portapapeles entre las dos lecturas y no pierde ninguno de los dos formatos aunque otra aplicación lo esté usando a la vez. XLSSetClipboardBiff8 es el lado de escritura correspondiente: coloca el flujo del archivo compuesto BIFF8, el texto Unicode separado por tabuladores y una carga CF_HTML opcional en una sola transacción —pase un Text o un Html vacíos para omitir cualquiera de los dos formatos acompañantes, mientras que la parte Biff8 es obligatoria

Resolución del texto de visualización de celdas

TXLSCellDisplayMode = (xcdmFormattedValue, xcdmFormulaText,
  xcdmSuppressedZero);

TXLSCellDisplayOptions = record
  ShowFormulas: Boolean;
  ShowZeros: Boolean;
  SheetProtected: Boolean;
  FormulaWidthFactor: Double;
  DateSerialZero: Double;
end;

TXLSCellDisplayInput = record
  HasFormula: Boolean;
  FormulaHidden: Boolean;
  IsNumericZero: Boolean;
  FormulaText: WideString;
  FormattedText: WideString;
end;

TXLSCellDisplayResult = record
  Mode: TXLSCellDisplayMode;
  Text: WideString;
  TreatAsText: Boolean;
  EffectiveWidthFactor: Double;
end;

function XLSDefaultCellDisplayOptions: TXLSCellDisplayOptions;
function XLSNormalizeFormulaDisplayText(const FormulaText: WideString): WideString;
function XLSResolveCellDisplay(const Options: TXLSCellDisplayOptions;
  const Input: TXLSCellDisplayInput): TXLSCellDisplayResult;
      
Un resolutor compartido decide qué muestra una celda para un estado de vista dado: fórmulas en lugar de valores, ceros suprimidos, texto de fórmula oculto en hojas protegidas y el factor de ancho duplicado que Excel aplica a la visualización de fórmulas. El visor de libros y los renderizadores lo llaman a través de sus puntos de entrada de opciones de visualización, y las aplicaciones pueden llamar directamente a XLSResolveCellDisplay con sus propios registros de entrada; XLSDefaultCellDisplayOptions devuelve los valores predeterminados canónicos y XLSNormalizeFormulaDisplayText normaliza una cadena de fórmula para mostrarla

Objetos de validación de datos clásicos

TXLSDataValidationType = (xlsDvAny, xlsDvWhole, xlsDvDecimal, xlsDvList,
  xlsDvDate, xlsDvTime, xlsDvTextLength, xlsDvCustom);
TXLSDvErrorStyle = (xlsDvErrStop, xlsDvErrWarning, xlsDvErrInformation);

TDVRange = class;             { one validation rule over one or more ranges }
TDVRangeList = class;         { the per-sheet rule collection }
TDataValidator = class;       { engine that checks edits against the rules }
      
Las aplicaciones auxiliares con tipo TXLSWorksheet.Add*Validation crean reglas TDVRange en el TDVRangeListde la hoja; cada regla transporta su TXLSDataValidationType, sus límites, sus mensajes de entrada y de error, y su TXLSDvErrorStyle. TDataValidator evalúa una edición contra las reglas e informa de si el valor es aceptable, que es también la comprobación que subyace a los avisos de validación del propio Excel

Escaneo y resolución de colores indexados

TXLSIndexedColorKind = (xickPalette, xickAutomatic, xickSystem, xickInvalid);
TXLSSystemColorRole = (xscrNone, xscrWindowText, xscrWindowBackground,
  xscrChartText, xscrChartBackground, xscrChartNeutral, xscrToolTipText);

TXLSIndexedColorResolution = record
  Kind: TXLSIndexedColorKind;
  RawIndex: Int64;
  PaletteSlot: Integer;
  SystemColorRole: TXLSSystemColorRole;
  ARGB: LongWord;
  HasResolvedColor: Boolean;
end;

TXLSNearestIndexedColorMatch = record
  InputARGB: LongWord;
  ColorIndex: Integer;
  PaletteSlot: Integer;
  ARGB: LongWord;
  DistanceSquared: Double;
  ExactMatch: Boolean;
end;

TXLSIndexedColorUsageKind = (xicukFont, xicukFillForeground,
  xicukFillBackground, xicukGradient, xicukBorder, xicukConditionalFormat,
  xicukChart, xicukShape, xicukComment, xicukWorksheet, xicukOther);
      
Estos registros dan soporte a los métodos de nivel de libro ResolveIndexedColor, NearestIndexedColory ScanIndexedColorUsage : una resolución informa de cuál de las cuatro fuentes TXLSIndexedColorKind procede un token indexado, junto con su ranura de paleta, su rol de color del sistema y su ARGB normalizado; una coincidencia más cercana añade la distancia RGB al cuadrado y la marca de coincidencia exacta, y el escaneo de uso etiqueta cada categoría de consumidor que bloquea una ranura de paleta. La biblioteca mantiene una caché interna TXLSIndexedColorMatcher cuyas claves se basan en la generación de la paleta — FindNearest responde desde ella a las consultas de color más cercano y UpdateSlot parchea una ranura de paleta —, de modo que las resoluciones repetidas permanecen libres de asignaciones

Aplicaciones auxiliares de referencias A1

function XLSA1CellRef(ARow, ACol: Integer): WideString;
function XLSTryParseA1CellRef(const ARef: WideString;
  out ARow, ACol: Integer): Boolean;
function XLSTryParseA1RangeRef(const ARef: WideString;
  out ARow1, ACol1, ARow2, ACol2: Integer): Boolean;
      
Aplicaciones auxiliares independientes para la misma notación A1 que aceptan las API del libro: dan formato a coordenadas de base cero como una referencia de celda A1 y analizan de vuelta referencias de celda o de rango, devolviendo False para una entrada mal formada en lugar de lanzar una excepción

Véase también