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 de trabajo, hojas de cálculo, renderizado, importación, diagnósticos y visor, pero que no requieren una guía separada orientada a tareas
Filtrado y formato condicional
TXLSAutofilter | Add, AddAutofilterData, AssignFrom, Clear y ParseAutofilterData editan o importan la definición del filtro; SetRangeBounds(ARow1, ACol1, ARow2, ACol2) restaura límites inclusivos de base 1 sin eliminar los criterios cargados ni las formas de dropdown, e ignora límites no positivos o invertidos y un conteo de columnas que difiere de los campos cargados; Defined, FirstRow, FirstCol, LastCol, LastRow y FieldCount exponen sus límites activos y el número de columnas filtradas |
TXLSAutofilterItem | Shape expone el dibujo del botón de filtro asociado al elemento, y el criterio de filtro cargado está disponible como un registro de operando TXLSAutofilterDOPER — DataType selecciona la forma del operando y grbitSgn lleva los bits de signo y banderas — para inspección o edición de round-trip |
TXLSDataBarSpec | AxisColor, AxisIsThemeColor, AxisThemeColorId, AxisThemeColorTint y ClearAxisThemeColor controlan el eje; Direction, GradientFill, NegativeBarBorderColorSameAsPositive, NegativeBarColor, NegativeBarColorSameAsPositive y NegativeBorderColor controlan la apariencia de la barra; IsIndexedColor, IndexedColorIndex y ClearIndexedColor gestionan el color de barra por índice de paleta |
TXLSIconSetSpec | ThresholdEqualsInclude selecciona comparación inclusiva o exclusiva para cada umbral de icono |
TXLSCfValue | IsIndexedColor e IndexedColorIndex informan 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 accesores existentes |
TXLSCfValue, TXLSDataBarSpec, TXLSColorScaleSpec, TXLSIconSetSpec y TXLSDxfStyle aceptan AttachWriteGuardOwner, que vincula el objeto de regla a su libro de trabajo propietario para que las ediciones adquieran un write guard automáticamente; el propietario implementa TXLSCondFormatWriteGuardOwner, cuyo único método AcquireWriteGuard entrega a la regla el write guard del libro de trabajo. TXLSDxfStyle agrega FontColorIndex con FontColorIsIndexed más los pares FillFgColorIndex / FillFgColorIsIndexed y FillBgColorIndex / FillBgColorIsIndexed para colores de reglas por índice de paleta, y las invalidaciones de fuente diferencial FontName, FontSize y 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 write guard y marca la regla como dirty para su re-emisión
TXLSConnections, TXLSDataTables y TXLSQueryTables exponen OnAcquireWriteGuard (tipos TXLSConnectionAcquireWriteGuard, TXLSDataTableAcquireWriteGuard y TXLSQueryTableAcquireWriteGuard), el hook que sus rutas de edición usan para obtener el IXLSWorkbookWriteGuard del libro de trabajo propietario antes de mutar y para avanzar la generación del libro después; el guard registra StartGeneration, y Complete marca la escritura como terminada para que las cachés dependientes puedan reconstruirse
Las conexiones de datos preservadas llevan una descripción con tipos: 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 su tipo de definición almacenada mediante TXLSDataTableKind
Tablas de datos What-If y agrupación de tablas dinámicas
TXLSDataTable | Assign, ContainsCell e IsRoot copian e inspeccionan una tabla; Kind, FirstRow, FirstCol, LastCol, LastRow, AlwaysCalculate, ColumnInputCol, ColumnInputRow, ColumnInputDeleted, RowInputCol, RowInputRow y RowInputDeleted exponen la definición de cálculo almacenada |
TXLSDataTables | Add, AddExisting, Delete, Clear, Assign, AdjustForShift y Offset mantienen la colección; FindByCell y FindRoot localizan la tabla que contiene una celda dada o que tiene su raíz en ella; Count, Items y OnChange exponen el estado de la colección |
TXLSPivotCacheField | GroupBaseField y GroupParentField exponen las relaciones entre un campo agrupado y su campo de origen o padre |
Los umbrales de conjuntos de iconos pueden renderizarse o validarse programáticamente: XLSCfIconSetCount informa cuántos iconos define un TXLSIconSetType, y XLSBuildCfIconGeometry rellena un TXLSCfIconGeometry con las primitivas (TXLSCfIconPrimitive, tipo TXLSCfIconPrimitiveKind: cfipPolygon, cfipEllipse, cfipRect, cfipLine) y puntos (TXLSCfIconPoint) que dibujan un icono, para que los renderizadores personalizados igualen las formas de iconos integradas de Excel
Diagnósticos, trazado de fórmulas y validación
TXLSDiagnostic | Code, NativeCode, Message, Severity, ExceptionClass, PartName, RecordId, SheetIndex, SheetName y StreamOffset identifican un diagnóstico de analizador, escritor o paquete |
TXLSDiagnostics | Add agrega un diagnóstico, Clear reinicia la colección, y Count más Items enumeran sus entradas |
TXLSDiagnosticSeverity and TXLSDiagnosticOperation | TXLSDiagnosticSeverity (xlsDiagnosticInfo, xlsDiagnosticWarning, xlsDiagnosticError, xlsDiagnosticFatal) clasifica un diagnóstico y TXLSDiagnosticOperation (xlsOperationNone, xlsOperationOpen, xlsOperationSave, xlsOperationCalculate, xlsOperationExport) nombra la fase que lo produjo; los manejadores OnDiagnostic leen ambos del TXLSDiagnostic entregado |
TXLSFormulaDebugSession | CurrentStep, DependencyCount, NodeCount y StepCount exponen la instantánea actual del depurador y los tamaños de su traza |
TXLSFormulaTracer | StepCount informa el número de pasos de evaluación registrados |
TXLSImportCheck | AddRule, AddUniqueRule y AddCrossColumnRule configuran predicados de columna, unicidad compuesta y comparaciones tipadas; Check devuelve violaciones estructuradas a partir de los valores almacenados de la hoja y las cachés de fórmulas sin recálculo ni materialización de celdas empaquetadas; HeaderRow, FirstRow, LastRow, OnVerifyCell, ViolationCount y Violation exponen límites, callbacks y resultados; Annotate y KeepOnlyViolations son operaciones explícitas de libro de corrección; consulte esquemas de validación de importación para tipos, límites, sistemas de fechas, identidad de tuplas y comportamiento de fallo |
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 1 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 comienza la comprobación en la fila siguiente y tiene precedencia sobre FirstRow; de lo 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
TlxImportColumnRule | Column, Flags, Name, Title, MinLength, MaxLength, Pattern, ValueKind y DateSerialMode configuran una columna; MinimumValue, MaximumValue, HasMinimum, HasMaximum, MinimumInclusive y MaximumInclusive configuran los límites; Validate comprueba la configuración del esquema y PreparePattern prepara la regex; las dos sobrecargas de Check devuelven un Boolean con un mensaje de error y opcionalmente un TlxImportViolationKind |
TlxImportRuleFlags | irRequired, irTextLength, irPattern, irUnique y irCallback conservan sus comprobaciones existentes; irValueType habilita ValueKind y irValueRange habilita los límites configurados; una columna sin flags no se comprueba |
TlxImportValueKind | ivkAny acepta valores escalares finitos soportados, ivkNumber acepta Variants numéricos finitos, ivkInteger exige además un valor integral, ivkDate acepta Variants de fecha o seriales de Excel habilitados explícitamente, ivkBoolean exige un Variant Boolean, y ivkText exige un Variant de cadena |
TlxImportDateSerialMode | idsNone es el valor predeterminado y mantiene los valores numéricos distintos de las fechas; idsExcel1900 y idsExcel1904 interpretan explícitamente valores numéricos para una columna que usa irValueType con ValueKind = ivkDate |
AddRule(Column) reemplaza y libera cualquier regla previa de esa columna; los predicados por tipo de valor, rango, longitud y patrón omiten los valores faltantes, los nulls y las cadenas vacías, mientras que irRequired los reporta; la unicidad conserva las políticas diferenciadas descritas abajo; los espacios en blanco no vacíos siguen siendo un valor; un número no califica como Boolean, una fecha no califica como número ordinario, y una cadena con apariencia numérica sigue siendo texto
Asignar MinimumValue o MaximumValue habilita ese límite; cualquiera de HasMinimum o HasMaximum puede deshabilitarlo de nuevo; ambos interruptores 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; límites invertidos, faltantes, incompatibles o vacíos lanzan una excepción antes de que comience 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 a entero preservan 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 IsMatch existente, así que use anclas como ^...$ cuando el texto completo deba coincidir; una regex inválida deshabilita 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 incluso cuando su formato numérico muestra una fecha; elija un modo de serial explícitamente cuando ese sea el esquema de importación aceptado; el modo afecta solo 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 de 10000; los seriales fraccionarios retienen su hora del día; el sistema 1900 rechaza todo serial desde 60 inclusive hasta 61 exclusivo porque ese intervalo denota el día bisiesto ficticio; el sistema 1904 mapea el serial cero al 1 de enero de 1904
Los límites de fecha incluyen la hora del día, así que un máximo fijado a la 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 el día final completo deba aceptarse; 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): TlxImportUniqueRule | Agrega una restricción de tupla independiente sobre una lista ordenada, no vacía de columnas distintas; Name identifica la regla, Title antecede su mensaje, ColumnCount y Columns[Index] de base 0 exponen sus miembros, y SkipIncompleteRows es True por defecto |
AddCrossColumnRule(ALeftColumn, ARightColumn: Integer; AComparison: TlxImportComparison): TlxImportCrossColumnRule | Agrega una comparación de la misma fila con LeftColumn y RightColumn de solo lectura, y Comparison, Name, Title y SkipBlankValues editables, que es True por defecto |
TlxImportComparison | icEqual, icNotEqual, icLess, icLessOrEqual, icGreater e icGreaterOrEqual seleccionan la relación; los pares numéricos y de fechas comparan sus valores, los pares Boolean ordenan False antes que True, y los pares de cadenas comparan unidades de código UTF-16 de forma ordinal con distinción de mayúsculas y minúsculas |
Las claves compuestas retienen 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 y minúsculas, normalización Unicode, análisis por configuración regional ni ambigüedad de delimitadores; combinaciones como ('ab', 'c') y ('a', 'bc') siguen siendo diferentes; cada pasada de validación comienza un índice de tuplas fresco
Cuando SkipIncompleteRows = True, un miembro faltante, null o de cadena vacía excluye esa fila de la unicidad de tuplas; asignarle False incluye esos miembros con sus identidades Variant originales; un duplicado informa la primera columna de la tupla como su dirección de celda y la primera fila coincidente mediante FirstDuplicateRow
El irUnique existente de una sola columna conserva su comportamiento de coincidencia textual sin distinción de mayúsculas y minúsculas y omite los valores faltantes o null; use AddUniqueRule([Column]) cuando se exija identidad tipada estricta para una columna
Las comparaciones entre columnas nunca coercitan cadenas a números, números a Boolean ni números ordinarios a fechas; las categorías mixtas incompatibles fallan incluso para icNotEqual; las comparaciones de cadenas distinguen Unicode compuesto y descompuesto, preservan caracteres null incrustados y usan el orden de prefijo-más-corto-primero; cuando SkipBlankValues = False, cualquiera de los dos operandos en blanco produce una violación entre columnas
Resultados estructurados y libros de corrección
TlxImportViolation | Row, Col, SheetName y Address identifican la celda, con Address en notación A1; ValueText y ErrorText llevan información de visualización; RuleName y Kind identifican la regla configurada y la categoría de fallo; RelatedColumn identifica el segundo operando en un fallo entre columnas y FirstDuplicateRow identifica la fila original en fallos de unicidad |
TlxImportViolationKind | ivRequired, ivTextLength, ivPattern, ivUnique, ivCallback, ivValueType, ivValueRange, ivCellError, ivFormulaCacheMissing, ivCompositeUnique e ivCrossColumn distinguen las categorías de fallo soportadas |
Check(Sheet) devuelve el número de violaciones, y ViolationCount más Violation(Index) de base 0 enumeran el reporte; una regla de columna informa su primer predicado que falla, mientras que las reglas de tupla y de comparación configuradas independientemente pueden agregar más violaciones para la misma celda; asigne valores Name con significado cuando los llamadores necesiten identificadores estables de reglas de la aplicación
Las celdas con 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 requieran resultados de fórmulas frescos; la validación no accede a fuentes externas, altera definiciones de fórmulas ni evalúa fórmulas sin caché
OnVerifyCell retiene la firma del callback TlxImportVerifyCell y se ejecuta después de los predicados de columna aplicables exitosos y de las comprobaciones de unicidad; devuelve un Boolean y puede asignar un mensaje de error de la aplicación; los callbacks deben mantener el libro y el esquema de validación sin cambios, y las escrituras al libro son rechazadas por el lease de lectura; las excepciones del callback se propagan y el lease se libera para operaciones posteriores
Check nunca anota, elimina 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 violaciones y crear un libro de corrección; estos métodos modifican la hoja de cálculo suministrada, así que llámelos sobre el libro previsto después de revisar el reporte
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 relevantes de celdas almacenadas y el acceso a cachés de fórmulas almacenadas durante toda la comprobación
Políticas de guardado de vínculos externos
TXLSExternalLinkUpdateMode = (xluPromptUser, xluNever, xluAlways);
property IXLSWorkbook.SaveExternalLinkValues: Boolean;
property IXLSWorkbook.UpdateLinks: TXLSExternalLinkUpdateMode;
property TXLSXWorkbook.SaveExternalLinkValues: Boolean;
property TXLSXWorkbook.UpdateLinks: TXLSExternalLinkUpdateMode;
xluPromptUser; xluNever y xluAlways solo cambian la preferencia de actualización almacenada en el libro de trabajo, y nunca autorizan ni inician acceso a archivos externos o a la red
Auditoría de cálculo y pistas del libro de trabajo
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órmula 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 de trabajo. RecalcAndVerifyEx ejecuta la auditoría profunda: evalúa cada fórmula una vez a través del grafo de dependencias en una capa aislada de resultados para que las celdas dependientes lean este pase en lugar de cachés obsoletas, clasifica los fallos de evaluación (argumentos no soportados, referencias circulares, referencias externas denegadas o faltantes, tablas de datos omitidas, cancelación, fallos internos) con códigos de resultado, registra una pila de llamadas acotada por fallo, respeta un presupuesto de problemas y un receptor de progreso/cancelación, y permanece de solo lectura salvo que ApplyResults confirme atómicamente los valores recalculados tras un pase completamente exitoso sobre una estructura de libro de trabajo sin cambiosAbsoluteTolerance y RelativeTolerance controlan el reporte de discrepancias, no los valores intermedios de cálculo ni la aplicación explícita de cachés
Para resultados numéricos, una discrepancia requiere una diferencia absoluta mayor que AbsoluteTolerance y, cuando la tolerancia relativa está habilitada, mayor que RelativeTolerance * max(abs(Expected), abs(Actual))
La igualdad en cualquiera de los dos umbrales se tolera; los valores modificados igualmente entran 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 se puedan reportar
Una auditoría de solo lectura nunca cambia las cachés almacenadasTXLSCalculationAuditReport.Issues es un TXLSCalculationAuditIssue; Kind selecciona una de las categorías xlcai*, Expected / Actual llevan los valores comparados en las discrepancias de caché, Stack es la cadena acotada de llamadas de evaluación representada como Sheet!A1 > Sheet!B2 (marco más externo primero), y ExternalTarget describe el libro de trabajo externo en los problemas de referencias externas. TXLSRecalcAuditOptions.OnProgress es un receptor TXLSRecalcAuditProgress que recibe el progreso de nodos ACurrent / ATotal y puede asignar ACancel para detener la auditoría en el siguiente límite de nodo con un único problema xlcaiCancelledRunCalculationAudit es el punto de entrada del motor al que delegan los envoltorios de auditoría a nivel de libro de trabajo, y acepta el mismo registro de opciones. FormulaIsVolatile informa si una fórmula forzaría un recálculo en cada pasada (llamadas como NOW, RAND, TODAY, OFFSET, INDIRECT, o una referencia no resoluble)AuditOverlayWrite almacena un valor de reemplazo para una celda (índice de hoja de base 1, fila y columna de base 0 según la convención de la calculadora), AuditOverlayRead y AuditOverlayHash la consultan, y AuditOverlayClear vacía la capa. Los valores superpuestos los devuelven los obtenedores normales de valores de celda, así que el recálculo y la auditoría profunda los observan sin mutar las celdas de la hoja de cálculo; limpiar la capa restaura los valores almacenadosFórmulas de tabla y estado IME
property TXLSXTable.ColumnCalculatedFormulaArrayStates[Index: Integer]: TXLSTableFormulaArrayState;
property TXLSXTable.ColumnTotalsFormulaArrayStates[Index: Integer]: TXLSTableFormulaArrayState;
property TDataValidation.ImeMode: TXLSDataValidationImeMode;
property TXLSXDataValidation.ImeModeKind: TXLSDataValidationImeMode;
SaveExternalLinkValues a False omite los registros Classic XCT y CRN, o el subárbol sheetDataSet del libro externo XLSX, conservando los destinos de los 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 de trabajo puede serializar de nuevo esa caché retenida
Inspección y eliminación de paneles de tareas de Web Add-in
function IXLSWorkbook.HasWebAddinTaskPanes: Boolean;
function IXLSWorkbook.WebAddinTaskPaneCount: Integer;
function IXLSWorkbook.RemoveWebAddinTaskPanes: Integer;
function TXLSXWorkbook.HasWebAddinTaskPanes: Boolean;
function TXLSXWorkbook.WebAddinTaskPaneCount: Integer;
function TXLSXWorkbook.RemoveWebAddinTaskPanes: Integer;
1303 y lanzan una excepción antes de mutar, mientras que Classic XLS y ODS devuelven False, 0 y -1 sin escanear el paquete
Política de visualización de objetos del libro de trabajo
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;
workbookPr.showObjects; los valores faltantes adoptan xlsodmShowAll por defecto, las cargas útiles Classic reservadas intactas y los tokens XLSX no soportados permanecen sin pérdidas, y las asignaciones explícitas emiten solo valores canónicos
ExportObjectPlaceholders solicita la misma política de bajo costo sin decodificar cargas útiles de imágenes ni construir escenas de gráficos
xlsodmHideAll impide la recolección de dibujos y la expansión de rangos impulsada por objetos antes de que comience el renderizado; la conversión de libros de trabajo transporta los tres estados, ODS escribe los dibujos completos en el modo de marcadores de posición y omite la salida de dibujos y medios en el modo hide-all, y los fondos de hoja 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;
1, 1, 1, 1, 100 y 96; las correcciones de ancho y alto deben ser mayores que cero y menores que dos, el interletrado de línea está acotado a (0, 4], los márgenes de celda a [0, 4], el escalado de pantalla a [100, 500] por ciento, y el DPI de medición a [36, 2400]
RenderCalibration, CaptureRenderCalibration y ResetRenderCalibration; la asignación de registros completos valida antes de mutar, 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 de trabajo, una identidad de backend, un servicio de medición y una caché acotada de métricas local de la operación; CreateXLSRenderGeometry usa GDI, mientras que CreateXLSPortableCairoRenderGeometry en lxPortableCairo usa bytes de fuentes explícitos con FreeType/HarfBuzz en Linux o macOS nativos; MeasureText devuelve ancho en píxeles, alto, interletrado, ascenso, descenso y número de líneas, mientras que MaximumDigitWidthPixels, ColumnWidthToPixels, PixelsToColumnWidth, PointsToPixels, PixelsToPoints y UsableCellWidthPixels proporcionan las conversiones de geometría compartidas
MarkSheet, mientras que TXLSPaginationModel.Build captura un servicio para el RenderBackend seleccionado; los puntos de entrada de PDF, SVG, mapa de bits, vista previa de impresión, visor de libros y HTML seleccionan su propio backend antes de la salida, cambiar la calibración del libro de trabajo no puede mutar una instantánea existente, y la salida no escribe dimensiones de la hoja de cálculo
xlsrgbHtml fresco, 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é
IXLSRenderGeometry — WorkbookGeneration, CacheCapacity y CacheEntryCount — informan la generación vinculada y el llenado de la caché para diagnósticos, y ImplicitWidthMaximumDigitWidthPixels devuelve la medición de ancho de dígito detrás de la emulación de anchos de columna implícitos
MeasureText rellena un registro TXLSRenderTextMetrics (ancho en píxeles, alto, interletrado, ascenso, descenso y número de líneas) a partir de un TXLSRenderFont cuyo miembro Styles es un conjunto de flags TXLSRenderFontStyle (negrita, cursiva, subrayado, tachado)
Importación, generación de código, comparación y supervisión
TXLSHTMLImport | Las sobrecargas de LoadFromHTML importan contenido de tablas HTML desde un flujo o archivo a una hoja de cálculo, con coordenadas de inicio, selección de tabla y separador decimal opcionales |
TXLSCodeGen | Language (tipo TlxCodeGenLanguage: lcgDelphi o lcgCppBuilder) selecciona el dialecto de origen de las sentencias generadas, GenerateToList escribe el código generado del libro de trabajo en una lista de cadenas, y TlxCodeGenOptions amplía la salida con combinaciones, anchos de columna o formatos numéricos (cgoMerges, cgoColumnWidths, cgoNumberFormats; las hojas y celdas siempre se emiten) |
TXLSXWorkbookCompare | Compare compara celdas almacenadas tipadas, texto de fórmulas, presencia de hojas y combinaciones; Options agrega cachés de fórmulas, estilos base de celdas y geometría de filas o columnas, SetNumericTolerance configura la igualdad numérica, y Count, Diff y Report exponen los resultados ordenados; consulte comparación de libros |
TXLSFileMonitor | IntervalMs selecciona el intervalo de sondeo y SynchronizeEvent selecciona la entrega sincronizada de callbacks; un manejador OnFileChanged puede desactivar o destruir el monitor, o cambiar FileName para empezar a vigilar otro archivo |
TXLSCSVLoader and TXLSCSVSaver | El cargador analiza texto delimitado en una cuadrícula en memoria de Variants — ParseFile y ParseStream llenan la cuadrícula, CellValue, RowCount y ColCount la leen de vuelta — con separador (ValueSeparator) y codificación (TXLSCsvEncoding: ANSI del sistema, UTF-16, UTF-8) autodetectados, y promoción opcional de tipos controlada por DetectTypes y entradas ColumnTypes por columna (TXLSCsvColumnType: auto, texto, número, fecha, booleano, omitir); SkipRows, AutoTrim, LocaleTolerantNumbers y FieldWidths refinan el manejo de ancho fijo y configuración regional. TXLSCSVSaver.SaveAs escribe la cuadrícula de vuelta con comillas RFC 4180, y QuoteAllStrings fuerza el entrecomillado; TXLSTSVSaver deriva del saver para salida separada por tabuladores |
Comparación de libros
TXLSXWorkbookCompare en 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 minúsculas, y cambiar solo el orden de las hojas no produce una diferencia
El valor Options predeterminado está vacío y ambas tolerancias son cero por defecto; la comparación predeterminada reporta hojas agregadas o eliminadas, celdas almacenadas agregadas o eliminadas, valores literales tipados cambiados, texto de fórmulas cambiado y rangos combinados agregados 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 escritura textual, las fechas retienen su propio tipo, y los errores se comparan por su código de error almacenado; los tipos de almacenamiento numérico con valores iguales se comparan como iguales, mientras que valores Int64 distintos permanecen distintos durante la comparación exacta
lcoFormulaCachedResults | Para celdas con texto de fórmula coincidente, compara el resultado en caché existente y distingue una caché faltante o invalidada de una caché disponible; las cachés cargadas y calculadas con el mismo valor tipado se comparan como iguales |
lcoCellStyles | Compara los estilos base resueltos en coordenadas coincidentes de celdas almacenadas, incluidas fuentes, rellenos, degradados, bordes, alineación, formatos numéricos y protección de celdas; un 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 |
lcoAxisGeometry | Compara altos de fila efectivos, anchos de columna, flags de oculto, niveles de esquema, flags de contraído y valores predeterminados de la hoja; un tamaño explícito igual al predeterminado efectivo se compara como igual a un tamaño implícito |
lcoDefinedNames | Compara nombres con ámbito de libro y de hoja, sus definiciones de fórmula, visibilidad, comentarios y flags de macro; el ámbito sigue los nombres de las hojas, y el orden de inserción no crea diferencias |
lcoDataValidations | Compara definiciones de validación en orden almacenado, incluidos los rangos objetivo normalizados, fórmulas, operadores, mensajes de entrada, mensajes de error y flags de control; cambiar el orden de los rangos objetivo dentro de una definición no crea una diferencia |
lcoConditionalFormats | Compara definiciones de formato condicional en orden almacenado, incluidas la prioridad efectiva, el comportamiento stop-if-true, los rangos objetivo, las fórmulas, los estilos diferenciales y los ajustes soportados de escala de colores, barras de datos e icon sets; los identificadores del pool de estilos y de la paleta indexada se resuelven a sus valores semánticos |
lcoTables | Empareja tablas por nombre y compara rangos, encabezados, totales, ajustes de estilo, comentarios, nombres de columnas, etiquetas, fórmulas, flags de matriz, nombres únicos, nombres de conexión, criterios de filtro y condiciones de ordenación; los IDs de tabla, los IDs de columna y el orden de inserción no crean diferencias, mientras que los IDs de filtro de color y de estilo diferencial de ordenación se resuelven a apariencia |
lcoDrawings | Compara definiciones de dibujos tipadas en orden de dibujo, reteniendo el orden de hijos de grupos y el orden de grupos de trazado de gráficos; las definiciones canónicas soportadas cubren imágenes, cuadros de texto, gráficos, grupos, vistas completas de slicers tipadas y vistas de timelines tipadas, con nodos de dibujo opacos o no soportados lanzando EXLSSemanticSnapshot |
lcoBlankStyleRegions | Compara estilos base resueltos en coordenadas sin celda almacenada de ninguno de los lados, incluidos los valores predeterminados de la hoja y las superposiciones virtuales de estilo; subdivisiones equivalentes de rectángulos se comparan como iguales, y los cambios adyacentes iguales se fusionan en rectángulos sin materializar celdas |
lcoRichTextRuns | Compara las fuentes efectivas y el texto de runs en celdas de texto almacenado coincidentes, hereda la fuente base para propiedades de run omitidas, ignora runs vacíos y fusiona runs adyacentes con fuentes efectivas iguales; el texto plano coincide con un run de texto enriquecido equivalente de fuente predeterminada |
lcoPivotTables | Empareja definiciones tipadas de PivotTable por nombre y compara vinculaciones de origen, diseño, campos, miembros de vista ordenados, agregaciones de datos, filtros, referencias de agrupación, definiciones calculadas, estilos y flags nativos de materialización; los IDs de caché y de miembros compartidos se resuelven a identidades de origen y valores tipados |
lcoPivotCaches | Empareja definiciones tipadas locales de PivotCache por identidad de origen y compara metadatos de refresh, metadatos de campos, etiquetas y rangos agrupados, dominios de miembros compartidos sin ordenar y valores de registros tipados ordenados; los miembros numéricos, de texto, Boolean, de fecha, de error y vacíos permanecen distintos, las fechas retienen la precisión binary64, y los IDs de caché y el orden de ranuras de miembros compartidos no crean diferencias |
lcoSlicerState | Empareja vistas de slicers con nombre y cachés, incluidas vinculaciones de columna de tabla o de Pivot no OLAP, nombres de PivotTables conectados, selecciones tipadas de miembros, ajustes de cross-filter y ordenación, leyenda, posición de desplazamiento, diseño de columnas, dimensiones, estilo, flags de bloqueo y de leyenda, y geometría de anclaje; las vinculaciones resuelven IDs de tabla, columna, hoja y caché |
lcoTimelineState | Empareja vistas tipadas de timelines con nombre y cachés locales no OLAP, incluidas vinculaciones del campo de origen y del PivotTable conectado, selección activa de fechas, leyenda, nivel y límites de la hoja; las selecciones inactivas omiten los extremos de fecha no usados |
Options es de tipo TlxCompareOptions, un conjunto de TlxCompareOption; habilitar una opción agrega 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 preservan la misma validación atómica
Los presupuestos de características cubren los bytes canónicos separados agregados y las entradas contadas de ambos libros, incluidos runs de texto enriquecido, nodos XML de filtros, campos Pivot, miembros de dominio y valores de registros, y conexiones de slicers o timelines; los readers comprueban conteos y entradas de texto grandes antes de construir XML nativo, aplican flujos de salida acotados, y lanzan EXLSXSemanticBudget cuando se excede 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 AbsoluteTolerance y RelativeTolerance usan la misma validación
Los literales numéricos y los valores numéricos en caché se comparan como iguales 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 desborde para valores opuestos extremos, y la tolerancia no coercita texto ni se aplica a fechas, estilos ni geometría
LeftName y RightName fijan nombres de visualización opcionales usados por las líneas de Report, con left y right por defecto; los nombres afectan solo al reporte, 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 conteo de diferencias, Count lee ese conteo después, y Diff(Index) usa indexación de base 0 para devolver un TlxCompareDiff propiedad del comparador; retenga el comparador mientras lee sus entradas, y vuelva a obtener las entradas tras otra comparación exitosa
Cada entrada proporciona Kind, Sheet, Row y Col de base 1 donde aplica, Ref, LeftText, RightText y valores tipados LeftKind / RightKind; TlxCompareValueKind contiene lcvNone, lcvBlank, lcvNumber, lcvText, lcvBoolean, lcvDateTime, lcvError y lcvFormula, con lcvNone usado para un lado ausente o una diferencia que no es de valor
TlxCompareKind retiene lckSheetAdded, lckSheetRemoved, lckCellAdded, lckCellRemoved, lckValueChanged, lckFormulaChanged, lckMergeAdded y lckMergeRemoved, y agrega lckFormulaCacheChanged, lckStyleChanged, lckRowGeometryChanged y lckColumnGeometryChanged
Las diferencias de estilo llevan huellas canónicas estables de estilo en LeftText y RightText; las diferencias de geometría llevan el tamaño, oculto, esquema y estado de contraído 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 características usan lckDefinedNameChanged, lckDataValidationChanged, lckConditionalFormatChanged, lckTableChanged, lckDrawingChanged, lckPivotTableChanged, lckPivotCacheChanged, lckSlicerChanged o lckTimelineChanged; Change es lccChanged, lccAdded o lccRemoved, y cada lado presente lleva su huella canónica de definición mientras que un lado ausente lleva una cadena vacía
lckRichTextChanged identifica una definición de run cambiada en su coordenada de celda y lleva huellas canónicas de runs en LeftText y RightText; la tolerancia numérica se aplica a literales de celda y cachés de fórmulas, mientras que las definiciones tipadas de características se comparan exactamente
Las referencias de características identifican nombres con ámbito o nombres de tablas, o usan posiciones de secuencia de base 1 para definiciones de validación, formato condicional y dibujos; insertar o mover una característica ordenada puede cambiar varias posiciones, mientras que las entradas de nombres a nivel de libro tienen un Sheet vacío
lckBlankStyleRegionChanged identifica un rectángulo en blanco cambiado mediante Row, Col, LastRow y LastCol inclusivos, y su Ref en A1; las coordenadas almacenadas las maneja la comparación ordinaria de celdas y lcoCellStyles, así que habilite 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 en lugar del orden de inserción de celdas
La comparación mantiene leases de lectura, recorre las celdas almacenadas a través de instantáneas de cursores separadas, y retiene 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 rectángulos activos y los límites de celdas almacenadas sin escanear una cuadrícula rectangular de un millón de filas; el trabajo crece con las características almacenadas, las intersecciones de regiones y las diferencias reportadas
Una comparación fallida preserva el resultado exitoso previo; una asignación de tolerancia inválida también preserva los ajustes y el resultado existentes, mientras que pasar un libro nil limpia el resultado y devuelve cero
Esta comparación cubre el contenido de celdas almacenadas de la fachada XLSX y definiciones tipadas seleccionadas de características; la escritura de fórmulas de nombres, validaciones, formatos condicionales, tablas y gráficos se normaliza a través del parser semántico de fórmulas, mientras que las fórmulas calculadas de Pivot retienen su texto de definición almacenado
Los filtros de tablas aceptan formas y condiciones de ordenación soportadas personalizadas, de lista de valores, de grupos de fechas, de color, de iconos, dinámicas y de top-count; las columnas de filtro independientes y las entradas de conjuntos de valores normalizan su orden, los valores predeterminados Boolean y las escrituras 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 fuentes locales de hojas de cálculo soportadas y vinculaciones no OLAP sin refrescar ni evaluar disponibilidad; las pistas nativas de disponibilidad de slicers son metadatos de visualización derivados, mientras que las selecciones de miembros y los metadatos nativos de ordenación reconocidos se comparan
Las propiedades nativas opacas de dibujos, los modelos Pivot binarios incompletos, las fuentes Pivot externas u OLAP, los registros suplementarios crudos de PivotTable y el XML de extensiones, el XML de filtros desconocido, y los atributos o hijos de extensión de slicers o timelines sin modelar lanzan EXLSSemanticSnapshot; la preservación de tales datos no implica equivalencia semántica
Las características importadas seleccionadas de PivotTable y PivotCache también validan el XML nativo preservado antes de comparar la proyección tipada, incluidos los metadatos de campos anidados 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 características, mientras que las vinculaciones modeladas de cachés de slicers siguen soportadas
TSimpleDomNode.RawName expone el QName original del elemento junto al Name normalizado por el reader, permitiendo inspección sensible a namespaces sin cambiar la coincidencia de nombres existente del parser
Los ajustes del libro y los metadatos opacos del paquete permanecen 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 soportados de imágenes, cuadros de texto, gráficos 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 ordenado, mientras que TMsoFbtSp.PersistentFlags expone los flags nativos de la forma sin asignar propiedades ni anclajes
TMsoShapeContainer.HasPreservedObjectData identifica los bytes de cola OBJ retenidos; HasOrdinaryEmbeddedPictureObjectData comprueba que las colas de imágenes contengan solo formatos de portapapeles reconocidos y registros de flags de imagen en cero, y rechaza los registros vinculados 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 datos nativos de dibujo que el parser tipado omite, permitiendo que la captura rechace explícitamente una apariencia sin resolver
TXLSXRichTextRun.BoldSet, ItalicSet, StrikethroughSet, UnderlineSet, VertAlignSet y ColorSet distinguen las propiedades de fuente heredadas de las anulaciones explícitas, incluidos los flags falsos, none, baseline y los colores automáticos; los setters marcan la propiedad como explícita incluso cuando su valor coincide con el valor inicial predeterminado del nuevo run
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 explícitamente esos runs, mientras que las propiedades compartidas/en línea de runs soportadas y los espacios en blanco retienen su semántica importada
La comparación efectiva de texto enriquecido aplica las anulaciones explícitas en falso antes de fusionar runs adyacentes iguales; las propiedades heredadas y las limpiadas explícitamente permanecen distintas durante la deduplicación de cadenas compartidas y los round trips XML soportados
TXMLReader.ResolveNamespaceUri(Prefix, Uri) resuelve la vinculación de namespace actualmente en alcance sin cambiar la posición del reader, devolviendo false cuando no existe vinculación; un prefijo vacío solicita el namespace predeterminado, y los QNames crudos siguen disponibles para 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 headless portable
Inspección separada de estilos y ejes
TXLSXWorksheet.ReadSemanticCellStyle(Row, Col) devuelve un TXLSSemanticCellStyle separado para coordenadas válidas de base 1, resolviendo estilos almacenados y empaquetados, valores predeterminados de la 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 estilos de tabla
TXLSXWorksheet.GetStoredAxisSpans(IsRow) devuelve TXLSXAxisSpans, un arreglo de registros TXLSXAxisSpan con FirstIndex y LastIndex inclusivos de base 1; reporta las huellas de metadatos de tamaño, oculto, esquema y contraído, preserva los tramos compactos de altos de filas repetidas, y deja el 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, y luego inspeccionar el estado efectivo una vez por cada intervalo resultante
TXLSXWorksheet.GetStoredStyleRegions devuelve TXLSXStyleRegions separados que contienen los límites inclusivos FirstRow, FirstCol, LastRow y LastCol de las huellas compactas de formato virtual; estas huellas pueden solaparse, y los llamadores leen su apariencia efectiva con ReadSemanticCellStyle
TXLSXWorkbook.ReadSemanticFeatures(Kind, Sheet, MaxBytes, MaxItems) devuelve entradas separadas TXLSXSemanticFeatures con un Key estable, bytes canónicos de Definition y un ItemCount contado; los límites positivos opcionales son 64 MiB y 1,000,000 de entradas por defecto
TXLSXSemanticFeatureKind contiene xlsxSemanticDefinedNames, xlsxSemanticDataValidations, xlsxSemanticConditionalFormats, xlsxSemanticTables, xlsxSemanticDrawings, xlsxSemanticPivotTables, xlsxSemanticPivotCaches, xlsxSemanticSlicers, xlsxSemanticSlicerCaches, xlsxSemanticTimelines y xlsxSemanticTimelineCaches
Los nombres definidos y los tres tipos de cachés 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 retienen su secuencia almacenada, y los arreglos y búferes devueltos son copias propiedad del llamador; estos readers adquieren leases de lectura y heredan la cobertura tipada y el comportamiento explícito con datos no soportados descrito arriba
TXLSXWorksheet.ReadSemanticRichText(Row, Col, IncludePlainText, MaxBytes, MaxItems, ConsumedItems) devuelve bytes canónicos separados de runs para coordenadas de base 1, o un búfer vacío cuando no hay texto enriquecido y IncludePlainText es false; el ConsumedItems: PInteger opcional recibe el conteo de runs capturados, y la captura de texto plano retiene el almacenamiento empaquetado
TXLSPivotCacheField.GroupItemTypes[Index] expone el tipo tipado correspondiente a GroupItemLabels[Index] y rechaza un índice fuera del dominio almacenado de etiquetas agrupadas
Metadatos de fórmulas y callbacks de consultas Pivot
TXLSGetCellFormulaText y TXLSCalculator.OnGetCellFormulaText leen el texto de expresiones almacenado usando un SheetIndex de base 1 y Row/Col de base 0, devolviendo lxOk o un código de error tipado y respetando la protección formula-hidden; TXLSGetPivotTable y OnGetPivotTable localizan una tabla prestada usando un SheetIndex de base 1 y coordenadas de rango de base 0
Los motores de libros conectan estos callbacks opcionales en contextos de cálculo normal, de solo lectura y aislado; los callbacks no recalculan destinos, no refrescan fuentes Pivot ni transfieren propiedad
TXLSPivotDataConstraint almacena un FieldName y un Item tipado, con TXLSPivotDataConstraints coleccionando pares campo/item; TXLSPivotTable.GetDataValue consulta un agregado visible soportado desde una instantánea separada de tabla/caché local, e IntersectsQueryRange usa límites de hoja de base 1 incluidas las celdas modeladas de filtros de reporte
TlxPivotQueryBudget recibe estimaciones de trabajo y memoria de forma síncrona y devuelve si la evaluación puede continuar; EXLSPivotQueryBudget y EXLSPivotQueryUnsupported distinguen los límites agotados de los modelos de caché o agregación no soportados
TXLSPivotCache.QueryModelIsComplete registra la preparación de consultas decodificada independientemente de la completitud de la reproducción cruda BIFF; QueryRecordsValid expone la validez de los registros importados y SetQueryRecordValidity aplica la precedencia del form-reader sin refrescar registros
Bytes de páginas de códigos explícitos
| Miembro | Contrato |
|---|---|
XlsEncodeCodePage(Text, CodePage, MaxBytes = -1) | Devuelve un RawByteString con los bytes exactos en una página explícita orientada a bytes distinta de cero, preserva los null incrustados, verifica la identidad de round trip Unicode, y lanza EConvertError para texto no representable; un MaxBytes no negativo conserva el prefijo más largo de caracteres completos que cabe, 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 de bytes explícita y preserva los null incrustados; 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 las unidades de código exactas de Unicode comprimido BIFF8 de U+0000 a U+00FF, preserva los null incrustados, valida el rango de bytes solicitado, y no interpreta esos bytes mediante una página de códigos |
TXLSBlob.AddRawString | Anexa los bytes codificados exactos sin una conversión de página de códigos AnsiString y actualiza DataLength; una entrada vacía no anexa bytes |
TXLSCalculator.CodePage, TXLSFormula.FCodePage | Seleccionan la codificación de bytes explícita de fórmulas legadas, con CP1252 por defecto; el libro Classic propietario sincroniza su calculadora al inicializarse o cuando se llama a SetCodePage |
TXLSFontList.GetFont, TXLSNumFormatList.GetNumFormatBlob, TXLSStyles.GetStyleBlob | El argumento opcional CodePage es 1252 por defecto y codifica texto BIFF5; la salida BIFF8 permanece Unicode |
TMsoDrawing.StoreNotes | El argumento opcional CodePage es 1252 por defecto y codifica el texto de comentarios previo a Unicode; el límite existente de tamaño de registro de comentarios ordinarios BIFF5 se mantiene; esto no agrega campos de autor, texto enriquecido ni geometría ausentes de ese formato de registro |
TXLSCustomName.SetSourceData | Los argumentos opcionales FileFormat y CodePage identifican los bytes crudos NAME importados y son xlExcel97 y 1252 por defecto; los registros crudos se reutilizan solo cuando su formato y codificación legada coinciden con la salida solicitada |
TXLSFormulatArrayItem.GetDataSize, TXLSFormulatArray.GetDataSize, TXLSFormulatArray.GetData, TXLSFormulatArrays.GetDataSize, TXLSFormulatArrays.GetData, TXLSCompiledFormula.GetExternalData | El argumento opcional ACodePage es 1252 por defecto; el tamaño y la salida de los arreglos de cadenas legados usan el mismo conteo de bytes codificados, mientras que las cadenas BIFF8 permanecen 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 matriz
TXLSCustomName deferred compilation | ClearDefinition libera el AST compilado de RefersTo conservando la cadena de definición almacenada y los bytes crudos NAME importados, Compile reconstruye el AST desde la definición almacenada e informa el éxito, y GetCompiledFormula recompila automáticamente, de modo que un nombre limpiado se resuelve de nuevo 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 flags | StoreIndex 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 IsHidden e IsMacro leen y escriben los flags hidden y macro del registro NAME de BIFF |
TXLSFormulatArray.RowsCount, ColsCount | Informan las extensiones de filas y columnas del bloque de fórmulas de matriz analizado; ambas comienzan en uno y acotan el dominio de items por celda que llevan los métodos de emisión |
Pools clásicos de fuentes, formatos y estilos
TXLSFontList stored font attributes | Las propiedades indexadas reflejan la clave de fuente almacenada en un índice de lista de base 0: Name, Size, ColorIndex, Bold, Italic, Strikethrough y Underline se unen a OutLineFont, Shadow, SubScript, SuperScript, Family y CharSet para inspección de solo lectura |
TXLSNumFormatList.AddValue, FmtExists | AddValue registra una cadena de formato y devuelve su índice, mapeando las escrituras de formatos integrados a sus ids canónicos y marcando los formatos de fecha y hora; FmtExists informa si una cadena de formato personalizado ya está registrada |
TXLSNumFormatList.IsDateFormat, IsDateFormatValue | IsDateFormat informa si el formato almacenado en un índice está marcado como formato de fecha u hora, mientras que IsDateFormatValue prueba directamente una cadena de formato buscando tokens de fecha y hora |
TXLSStyles.AddStyle, AddBuiltinStyle | AddStyle 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 usado por los estilos de nivel de filas y columnas |
TXLSStyles.BuiltinStyleName | Función de clase que devuelve el nombre de visualización canónico del estilo de celda integrado de Excel para los ids integrados 0 a 53; los ids fuera de rango devuelven un nombre vacío para que los writers recurran a la forma cruda de bytes integrados |
Aplicaciones auxiliares de paquete y almacenamiento binario
TXLSXOpaquePackage | LoadWorkbookXmlMetadata captura el estado XML a nivel de libro de trabajo, MarkAllPartsClean reinicia los flags de suciedad, y WorkbookExtLstXml más WorkbookRootAttributesXml exponen los fragmentos XML del libro de trabajo preservados; IsDiscardedPart informa si un nombre de parte fue eliminado por una operación de descarte, como la limpieza de Web Add-ins |
TXLSFileStorage | Load, LoadFolder, Write y WriteFolder transfieren contenido de archivos compuestos; Child y Count enumeran las entradas hijas, cada una un TXLSFileItem — un nodo de almacenamiento con nombre cuya subclase TXLSFileStream lleva los bytes almacenados como un TXLSBlob con DataSize informando la longitud de la carga útil |
TXLSBlob | Add agrega otro blob, mientras que AddByte, AddWord, AddLong, AddDouble, AddString y AddWideString agregan valores con tipos; CopyData, CopyMem, FillByte, Write, Clear, Reset y Dump gestionan el contenido; Buff y DataLength exponen el almacenamiento |
TXLSBlobList | Append, AppendList, CopyData y Write combinan o emiten entradas; Entries y TotalSize exponen el estado de la lista |
TXLSWideStringBuilder | AddString agrega texto y Length informa el número de caracteres acumulados |
Novedades de dibujo y del visor de libros de trabajo
TXLSFillFormat | PictureFill configura un relleno de forma respaldado por imagen, mientras que FillType selecciona el tipo de relleno (sólido, degradado, imagen o textura preestablecida) que emite el escritor |
TXLSShapes | AddScrollBar 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 agrega los límites de paso Min, Max e Inc — mientras que RegisterScrollBar y RegisterSpinner registran controles cargados desde un libro de trabajo |
TXLSWorkbookViewer | CanUndo y CanRedo informan la disponibilidad del historial de transacciones; ClearSelectedRange, CopySelectedRange, PasteSelectedRange y PasteText operan sobre el rango seleccionado, mientras que ReferencePickMode habilita la selección interactiva de referencias de celda o rango |
TXLSWorkbookEditHistory | El motor de transacciones de contenido headless en lxWorkbookViewer vincula un libro Classic 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; consulte las transacciones de edición headless |
TXLSCellContentSnapshot | Ambas clases de hojas de cálculo exponen ReadCellContent(Row, Col) y RestoreCellContent(Snapshot) para la captura y restauración separada de contenido nativo en coordenadas de base 1 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 preserva el texto enriquecido, las cachés de fórmulas y el estilo de la 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, XLSRecordCachedChartScene | Hacen preflight de los metadatos de gráficos en caché sin resolver celdas y registran primitivas vectoriales y de texto acotadas para un gráfico separado en lxPortableChart, devolviendo TXLSPortableSceneObjects y contabilidad de items, bytes y texto; los puntos de entrada de lxPagination retienen la misma implementación compartida para los llamadores 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 estrictamente ordenados y un modelo de gráfico sin adjuntar; consulte el registro de gráficos en caché |
TXLSGraphicsBackend | DrawTiledImage pinta un fondo de hoja repetidamente en la región de página recortada |
TXLSPaginationModel | CompactRangeMode, IncludeDrawings, IncludeGridlines, IncludeCellBorders y PaintPageBackground controlan el contenido de la página; RenderDPI, RenderColorMode y RenderSession exponen la resolución de salida, el manejo de color y la sesión de renderizado activa |
TXLSCellImageExporter | Measure calcula dimensiones en píxeles para rangos Classic o XLSX; ImageFormat, JpegQuality, MaxPixels, MaxBytes, IncludeObjects, IncludeGridlines, IncludeCellBorders, BackgroundColor, TransparentBackground, BeforePaint, AfterPaint y PaginationModel configuran y observan el renderizado |
TXLSPageImageExporter | BeforePaint, AfterPaint, MaxPixels, MaxBytes, BackgroundColor y TransparentBackground aplican los mismos hooks de pintura y límites de seguridad de salida a la exportación de imágenes paginadas |
TXLSPrintDocument | PrintWorksheet, PrintWorkbook y PrintAllVisibleSheets envían contenido Classic o XLSX a la impresora VCL; FirstPage, PrintRangeOnly, Collate, Copies, OnBeforeNewPage y OnAfterGeneratePage controlan el trabajo de impresión |
Modelos de gráfico clásicos y objetos de gráfico de la hoja de cálculo
TXLSXChartSeries | LineVisible, LineColorRGB y LineWidthPoints describen un trazo de serie independiente; LineStyleSet, LineColorSet y LineWidthSet preservan los ajustes explícitos, y EffectiveLineVisible resuelve la convención legada de solo relleno; MarkerFillSet y MarkerBorderSet distinguen el negro explícito de los colores automáticos de marcadores, mientras que el registro portable de líneas y dispersión soporta 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 |
TXLSChartSeries | AddTrendline y AddErrorBars crean anotaciones de series con tipos, mientras que TrendlineCount y ErrorBarCount informan los tamaños de sus colecciones; el campo existente MarkerSize retiene twips crudos de BIFF, mientras que el getter de solo lectura MarkerSizePoints devuelve ese valor dividido entre 20, incluidos tamaños de puntos fraccionarios |
TXLSChartAxis | HasAxcExtFlag comprueba un flag crudo AXCEXT sin exigir que el llamador decodifique la máscara de bits |
TXLSChartModel | AxisGroupCount informa el número de grupos de ejes principales y secundarios decodificados del gráfico |
TXLSCustomChart | AddAreaData agrega un elemento de área preconstruido para el reenlace de fórmulas al guardar, y ApplyDateAxisModel aplica un modelo de eje de fechas con tipos a los registros crudos del gráfico; GetStoredRecordInfo lee un ID de registro de base 0 y un conteo de bytes sin asignación, mientras que ReadStoredRecord(Index, MaxBytes) comprueba el límite de bytes antes de devolver bytes separados en un TXLSChartStoredRecord, sin evaluar fórmulas ni modificar cachés |
TXLSWorksheet | AddChartObject ancla un marco de gráfico en la hoja de cálculo y lo conecta al constructor de gráficos compartido |
TXLSXChartLayoutResolver | TryResolve resuelve un rectángulo de diseño con validación de tamaño opcional, y ResolveChart calcula los rectángulos del gráfico, título, leyenda, área de trazado y ejes |
Modelo de decodificación de gráficos con tipos
El estado decodificado del gráfico se expone como registros y enums sencillos para que el código de inspección nunca tenga que recorrer registros BIFF crudos: TXLSChartInfo lleva el resumen decodificado del gráfico con TXLSChartTypeFamily (cfBar, cfLine, cfPie, cfArea, cfScatter, cfRadar, cfDoughnut, cfSurface, cfBubble), cada serie informa su TXLSChartSeriesType, y TXLSChart3DState más 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 barras de error son objetos con tipos (TXLSChartTrendline, TXLSChartErrorBars) alcanzables desde cada serie
Registros de autoría de gráficos
La autoría de hojas de gráfico y del constructor acepta registros sencillos en lugar de grafos de objetos: TXLSChartTrendlineInfo, TXLSChartErrorBarsInfo, TXLSChartDataLabelsInfo y TXLSChartSeriesStyleInfo rellenan las entradas de serie que se pasan a TXLSWorksheets.AddChartSheet y al constructor de gráficos compartido, y TXLSPivotChartInfo describe el enmarcado de gráfico dinámico usado cuando un gráfico se adjunta a una tabla dinámica
Inspección de rellenos de gráficos clásicos
TXLSCustomChart.GetChartModel decodifica las tablas de propiedades OfficeArt nativas soportadas y las tablas de propiedades terciarias en registros GelFrame, incluidas las propiedades que siguen a entradas de carga útil complejas; la representación existente del constructor sigue soportada, y los límites de tabla mal formados dejan el relleno tipado previo sin cambios y reportan el registro no soportado
La inspección de gráficos valida la carga útil completa almacenada de texto y anotaciones antes de agregar estado tipado: los nombres de líneas de tendencia truncados o los separadores de etiquetas de datos reportan su ID de registro a través de _UnsupportedSemanticRecordID, mientras que los encabezados SeriesText nil o de tamaño insuficiente reportan ese registro como no soportado tanto para BIFF5 como para BIFF8; una extensión declarada de texto de serie que excede su carga útil lanza EReadError, libera el modelo parcial y deja los registros almacenados del gráfico sin cambios
El getter de marcadores y la inspección de rellenos preservan el almacenamiento crudo del gráfico; la ruta de captura de apariencia declarada valida por separado los gráficos de núcleo soportados, mientras que las sumas de verificación no verificadas de extensiones de títulos enriquecidos o de formas siguen sin soportarse
Readers acotados de gráficos, cadenas y fuentes almacenadas
TXLSChartStoredBytes es un arreglo de bytes separado y TXLSChartStoredRecord contiene RecordId y Data; estos readers inspeccionan el almacenamiento de origen retenido sin crear un modelo de gráfico decodificado ni evaluar fórmulas
| TXLSCustomChart.GetStoredRecordInfo | Devuelve un ID de registro y una longitud de bytes contada para un índice de registro de base 0 sin copiar su carga útil |
| TXLSCustomChart.ReadStoredRecord | Copia una carga útil después de validar el índice y el MaxBytes no negativo; el límite de bytes predeterminado es High(Int64) |
| TXLSCustomChart.ReadStoredFormulaLeafInfo | Inspecciona 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 soportada, y AllowUnboundBiff es False por defecto |
| TXLSCustomChart.ReadStoredFormulaLiteral | Devuelve un literal separado solo después de las mismas comprobaciones de procedencia y cuotas; una hoja no soportada lanza EInvalidOperation |
| TXLSCustomChart.SourceBiffVersion, SourceCodePage | Procedencia de solo lectura de los registros del gráfico retenidos |
| TXLSStringTable.GetStoredStringLength, ReadStoredString | Cuenta el almacenamiento UTF-16 existente usando la identidad de cadena de base 1 de la tabla, y luego copia solo cuando la cuota de caracteres no negativa lo cubre; las identidades inválidas y el almacenamiento UTF-16 incompleto se rechazan |
| TXLSFontList.GetStoredNameLength, ReadStoredName | Comprueba la clave de fuente almacenada en el índice de base 0 de la lista antes de contar o copiar su nombre bajo una cuota de caracteres no negativa |
| TMsoFbtOptItem.HasStoredUnicodeString | Comprueba los metadatos acotados almacenados de cadenas Unicode complejas sin materializar una cadena |
| TMsoShapeContainer.HasOrdinaryChartObjectData | Comprueba el tipo de objeto de gráfico almacenado, la identidad de objeto distinta de cero, los flags soportados y la ausencia de datos desconocidos de cola de objeto |
Mantenimiento de la tabla de cadenas compartidas y emisión de SST
TXLSStringTable en lxStringTable respalda las cadenas compartidas del libro Classic; los miembros de abajo cubren el registro del lado del reader, el mantenimiento de ranuras y la emisión cruda de SST para guardados de round trip
KeyExists, AddWithExtras | KeyExists informa si una cadena ya ocupa una ranura; AddWithExtras es el acompañante del lado del reader de Add que adjunta la carga útil cruda rgRun de texto enriquecido y rgExtRst fonética a la entrada sin elevar su conteo de referencias, porque cada celda que la referencia restaura después el conteo a través de la ruta normal de agregación |
Replace, ReplaceIndex | Replace suelta una referencia en la ranura antigua, liberándola cuando su conteo llega a cero, y vuelve a agregar el texto, devolviendo la ranura resultante; ReplaceIndex mueve una referencia de la ranura antigua a la nueva sin copiar texto |
AddSSTData, InitExtIndex | AddSSTData emite la carga útil cruda del SST a la lista de blobs del writer; la sobrecarga que recibe una tabla de remapeo de runs de fuente reescribe cada índice de fuente FormatRun a la salida ([MS-XLS] §2.5.129) de modo que los runs enriquecidos siguen el reordenamiento de fuentes al guardar, mientras que una tabla vacía conserva la emisión verbatim legada, e InitExtIndex numera los buckets ExtSST sobre las ranuras vivas antes de la emisión |
SlotCount, ExtIndex, ParsedExtSSTDsst, ParsedExtSSTItemCount, BiffSizeLimit | SlotCount es el límite superior de base 1 para la iteración de ranuras con las ranuras eliminadas leyéndose vacías, ExtIndex resuelve una ranura a su número de bucket ExtSST o -1 para una ranura que no está viva, ParsedExtSSTDsst y ParsedExtSSTItemCount retienen los valores importados del encabezado EXT/SST, y BiffSizeLimit acota cada fragmento de registro emitido — el writer Classic lo fija a 2080 bytes para BIFF5 y 8224 para BIFF8 |
Adjuntos PDF, firmas y exportación HTML
IXLSPDFAttachmentSource | WriteTo transmite por flujo los bytes del adjunto hacia la exportación PDF sin exigir que el exportador sea propietario de los datos de origen |
TXLSPDFExport | AttachmentDuplicatePolicy selecciona el manejo de nombres duplicados, AttachmentSpoolThreshold controla el spooling de adjuntos, y DocumentLanguage escribe los metadatos de idioma del documento |
TXLSPDFSignature | TextAlign, TextSize, TextColor, TextBold y TextItalic configuran la apariencia de la firma visible |
TXLSHTMLExport | ViewMode (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 |
TXLSXHtmlExportOptions | ViewMode, HotTrackTargets y HotTrackColor proporcionan los controles equivalentes de exportación HTML XLSX |
Auditoría de cálculo y controles del libro de trabajo
TXLSCalculationAuditReport | Truncated informa un truncamiento por límite de problemas, StackTruncated informa el truncamiento de marcos de la pila de llamadas, e Issues indexa los problemas de cálculo registrados |
TXLSUserFunctionRegistry | Generation cambia siempre que cambia el conjunto de funciones de usuario registradas, lo que permite invalidar los enlaces de fórmulas en caché |
EXLSReportRecoverableData | Category identifica la categoría de datos de informe recuperables presentada al llamador |
IXLSWorkBook | ManualCalculationThreadCount limita el número de trabajadores usado por el cálculo manual |
TXLSXDataValidation | HasUnknownImeMode informa un valor de modo IME que HotXLS preservó pero no reconoce |
TXLSXTable | ColumnCalculatedFormulaArrayRaw y ColumnTotalsFormulaArrayRaw exponen el texto original de las fórmulas de matriz de las columnas de la tabla |
Compatibilidad con el encuadre heredado de PivotCache
TXLSPivotCache | RawBucketIndex identifica la posición del subflujo de origen, RawFramingIsLegacy identifica un encuadre antiguo de HotXLS, RawModelIsComplete informa si el modelo tipado representa todos los registros, y CanUpgradeFraming informa si la re-emisión tipada opcional es segura |
TXLSPivotCache | StreamId expone la identidad del flujo de caché clásico, SourceDataType expone el tipo de datos de origen clásico, y RawHasStorageStream informa si una caché cargada provino de un flujo de almacenamiento PivotCache independiente |
TXLSWorkbook | UpgradeLegacyPivotCacheFraming habilita la reescritura solo de los encuadres de caché heredados de HotXLS cuyo modelo tipado está completo; la reproducción cruda ordinaria de la caché sigue siendo el valor predeterminado |
StreamId se escribe como el registro SXStreamID ([MS-XLS] §2.4.303) y se repite como el campo idstm del encabezado SXDB, que debe coincidir con él; SourceDataType se escribe como el registro SXVS ([MS-XLS] §2.4.317: $0001 hoja de cálculo, $0002 externa, $0004 consolidación, $0010 escenario) y se repite como el campo vsType del encabezado SXDB, que debe coincidir con él. Las cachés construidas desde un rango de hoja de cálculo empiezan con el tipo hoja de cálculo, mientras que las cachés leídas de un archivo conservan el valor que traía su subflujo, de modo que el escritor BIFF nunca deja un campo SXDB nombrando un registro que no emitió; RawHasStorageStream marca una caché cargada desde su propio flujo de almacenamiento cuyo descriptor global del libro de trabajo 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;
PasteFromClipboard de ambas fachadas: xlpoValuesOnly conserva los valores en caché de las celdas con fórmula y omite formatos y combinaciones, mientras que xlpoInsertRows y xlpoInsertCols desplazan el contenido existente antes de que el bloque aterriceCF_UNICODETEXT (con respaldo en CF_TEXT a través de la página de códigos ANSI actual), XLSSetClipboardTextAndHtml escribe texto y una carga útil con estilos HTML Format en una sola transacción, XLSBuildHtmlClipboard calcula los desfases 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 oleo de tipos que TXLSCSVLoader usa para CSV, XLSParseXmlSpreadsheet ejecuta el mismo llenado del loader sobre una carga útil SpreadsheetML 2003 obtenida con XLSGetClipboardXmlSpreadsheet, y los asistentes Biff8 detectan y leen el flujo nativo que el propio Excel coloca en el portapapeles, de modo que los datos pegados conservan valores, fórmulas y formato sin pérdida de textoXLSReadClipboardPasteData captura el flujo Biff8 y el texto Unicode bajo un solo bloqueo del portapapeles, así que un pegado nunca tiene que reabrir el portapapeles entre las dos lecturas ni pierde ninguno de los dos formatos ante un titular concurrente. XLSSetClipboardBiff8 es el lado de escritura correspondiente: coloca el flujo de archivo compuesto BIFF8, el texto Unicode delimitado por tabuladores y una carga útil 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 obligatoriaResolució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;
XLSResolveCellDisplay directamente con sus propios registros de entrada; XLSDefaultCellDisplayOptions devuelve los valores predeterminados canónicos y XLSNormalizeFormulaDisplayText normaliza una cadena de fórmula para visualizaciónObjetos 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 }
TXLSWorksheet.Add*Validation crean reglas TDVRange en el TDVRangeList de la hoja; cada regla lleva su TXLSDataValidationType, límites, mensajes de entrada y error, y TXLSDvErrorStyle. TDataValidator evalúa una edición contra las reglas e informa si el valor es aceptable, que es también la comprobación detrás de los mensajes de validación del propio ExcelEscaneo 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);
ResolveIndexedColor, NearestIndexedColor y ScanIndexedColorUsage: una resolución informa cuál de las cuatro fuentes TXLSIndexedColorKind originó un token indexado, junto con su ranura de paleta, rol de color de sistema y ARGB normalizado; una coincidencia más cercana agrega la distancia RGB al cuadrado y el flag 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 clasificada por generación de 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 no asignan memoriaFunciones 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;
False ante entradas mal formadas en lugar de lanzar excepciones