HotXLS Docs

API de infraestructura del libro

Estos miembros públicos soportan integraciones que inspeccionan la E/S, implementan serializadores o coordinan el cálculo a través de libros, con los miembros del libro declarados en lxHandleX y el grafo del espacio de trabajo declarado en lxDepGraph

Las aplicaciones ordinarias deberían usar primero el formato de celdas, SaveAs, Recalculate y las APIs del espacio de trabajo de libros externos; el registro en pools de estilos y la programación del grafo exigen las mismas convenciones de índices y ciclo de vida que los serializadores y el motor de cálculo de la biblioteca

Observación y recuperación de E/S

TXLSXWorkbook.OnReadCell recibe el índice de hoja, la fila, la columna, el valor almacenado y la fórmula de cada celda materializada durante el análisis XLSX, con un indicador Cancel escribible; TXLSXWorkbook.OnWriteCell recibe un valor de salida escribible más los indicadores Skip y Cancel antes de que una celda se serialice, de modo que un host puede transformar u omitir la salida sin reemplazar la API del libro por la API directa de streams

Ambas devoluciones de llamada usan coordenadas de hojas y celdas basadas en uno, y sus tipos declarados son TXLSXCellReadEvent y TXLSXCellWriteEvent; las devoluciones de llamada se ejecutan dentro de la operación activa de E/S, así que evite iniciar otra operación sobre el mismo libro desde una devolución de llamada

TXLSXWorkbook.RecoveryMode tiene False como valor predeterminado y permite que las fallas admitidas de análisis del XML de hojas se conviertan en diagnósticos de advertencia mientras la apertura continúa, dejando potencialmente contenidos de hojas recuperados solo parcialmente; no garantiza la recuperación de un paquete ZIP ilegible, así que inspeccione los diagnósticos y los datos recuperados antes de guardar

TXLSXWorkbook.FireProgress despacha una fase, un estado, un conteo actual y un conteo total a los manejadores de progreso asignados, con el manejador heredado recibiendo notificaciones de trabajo y el manejador extendido recibiendo todos los estados; un manejador extendido puede solicitar cancelación, excepto que la notificación de fin de escritura no puede revertir una salida ya confirmada

TXLSXWorkbook.AddDiagnostic agrega y devuelve un diagnóstico de propiedad del libro, registra el código, la severidad, la operación, el mensaje, el código nativo, el contexto de hoja y el nombre de la parte del paquete aportados, copia el nombre de la clase de la excepción cuando se aporta una, e invoca OnDiagnostic; no toma propiedad de la excepción ni la lanza

function TXLSXWorkbook.AddDiagnostic(ACode: Integer;
  ASeverity: TXLSDiagnosticSeverity; AOperation: TXLSDiagnosticOperation;
  const AMessage: WideString; ANativeCode, ASheetIndex: Integer;
  const ASheetName, APartName: WideString;
  AException: Exception): TXLSDiagnostic;

Políticas de salida e inspección del paquete guardado

TXLSXWorkbook.CSVEmitFormulas tiene False como valor predeterminado y cambia la salida CSV de resultados de fórmulas a texto de fórmulas para las celdas con fórmula; la salida de resultados intenta la evaluación de fórmulas y hace fallback al texto o valor almacenado de la celda cuando la evaluación falla; TXLSXWorkbook.CSVQuoteAllStrings también tiene False como valor predeterminado y fuerza comillas alrededor de los campos de texto mientras que los números, las fechas, los Boolean, Null y Empty conservan las reglas normales de entrecomillado

TXLSXWorkbook.LastSaveUsedStreaming reporta si el guardado preparado más reciente usó streaming de hojas, mientras que TXLSXWorkbook.LastSavePeakRowXmlChars reporta el fragmento XML de fila almacenado en búfer más grande, TXLSXWorkbook.LastSaveBufferedWorksheetXmlChars reporta el XML de hojas combinado en búfer, y TXLSXWorkbook.LastSavePeakAuxiliaryXmlChars reporta el fragmento XML auxiliar rastreado más grande; son conteos de caracteres de la instrumentación del serializador, no mediciones de la memoria total del proceso, y la salida ODS no usa la ruta de streaming de hojas XLSX

TXLSXWorkbook.TryCopyPreservedPart intenta copiar una parte de fuente preservada elegible, incluida su representación comprimida, a un TZipArchive de destino aportado por el llamador, devolviendo True cuando se copia o False cuando se requiere la serialización normal; la fuente debe permanecer disponible desde una apertura respaldada por archivo, y las partes faltantes o descartadas explícitamente no pueden copiarse

El llamador es dueño del archivo de destino y debe finalizarlo normalmente; una falla de reversión de la copia comprimida aún puede lanzar una excepción, y este ayudante ni construye un paquete completo de libro ni actualiza sus relaciones o tipos de contenido

Cifrado y metadatos del libro

TXLSXWorkbook.SaveAsEncryptedAgile acepta un nombre de archivo y una contraseña no vacía, serializa el paquete XLSX en memoria y escribe el contenedor cifrado Agile, devolviendo 1 en caso de éxito o -1 ante una falla reportada; el VerifyEncryptedSave opcional realiza una comprobación de reapertura después de escribir, y el método exige memoria para el paquete sin cifrar además de sus bytes serializados

TXLSXWorkbook.VerifyEncryptedFile abre el archivo y la contraseña aportados en un libro temporal y devuelve True únicamente cuando esa apertura tiene éxito, convirtiendo las excepciones en False; esto comprueba la legibilidad en lugar de comparar cada celda con el libro actual, y sigue el comportamiento normal de OpenEncrypted para una entrada XLSX sin cifrar

TXLSXWorkbook.DocSecurity almacena el campo de bits extendido de propiedades del documento: 1 denota protección por contraseña, 2 recomendación de solo lectura, 4 estado de solo lectura forzado y 8 bloqueo de anotaciones; estos bits de metadatos no aplican por sí mismos cifrado ni restricciones de acceso

TXLSXWorkbook.DocPropsTouched es el indicador de solo lectura que los escritores de propiedades del documento usan para decidir si las propiedades rastreadas han sido configuradas; los definidores de propiedades rastreadas como Title lo definen, mientras que los metadatos extendidos asignados directamente no lo definen automáticamente

TXLSXWorkbook.WorkbookProtectHash expone el hash heredado de protección del libro cargado o generado, normalmente cuatro dígitos hexadecimales o una cadena vacía cuando no existe hash de contraseña; use los métodos de protección del libro para cambiar la protección en lugar de asignar este valor de solo lectura, y mantenga la protección de la estructura del libro separada del almacenamiento cifrado de archivos

TXLSXWorkbook.ThemeMajorFont y TXLSXWorkbook.ThemeMinorFont exponen las tipografías de títulos y cuerpo cargadas del tema y sobrescriben los nombres cuando el tema predeterminado de Office se genera; un tema preservado textualmente tiene precedencia sobre estas configuraciones de nombres de fuentes

Estilos de tablas y pools de estilos del serializador

TXLSXWorkbook.DefaultTableStyleName y TXLSXWorkbook.DefaultPivotStyleName hacen ida y vuelta con los nombres predeterminados almacenados en la tabla de estilos para las tablas de Excel y tablas dinámicas recién insertadas; asignarlos no reformatea directamente cada objeto existente

TXLSXWorkbook.ResolveTableStyle devuelve un estilo personalizado de propiedad del libro por nombre, de lo contrario resuelve y cachea los estilos integrados admitidos TableStyleLight1 a TableStyleLight21, TableStyleMedium1 a TableStyleMedium28 o TableStyleDark1 a TableStyleDark11, y devuelve nil para un nombre desconocido; no libere el estilo devuelto

TXLSXWorkbook.FastStyleAppend tiene False como valor predeterminado y permite que la creación en bloque omita los escaneos de deduplicación en los pools de estilos y el registro ordinario de estilos compuestos, intercambiando una tabla de estilos más grande por una inserción más rápida cuando se crean muchos estilos distintos

function TXLSXWorkbook.RegisterCompositeXf(
  AFont, AFill, ABorder, ANumFmt, AAlign, AProt: Integer): Integer; overload;
function TXLSXWorkbook.RegisterCompositeXf(
  AFont, AFill, ABorder, ANumFmt, AAlign, AProt,
  ABuiltinNumFmt: Integer): Integer; overload;
function TXLSXWorkbook.RegisterLinkedCompositeXf(
  AFont, AFill, ABorder, ANumFmt, AAlign, AProt,
  AParentXfId: Integer; ALinkedParts: TXLSXFormatParts): Integer;

TXLSXWorkbook.RegisterCompositeXf registra los índices combinados de fuente, relleno, borde, formato numérico, alineación y protección, y devuelve el índice absoluto de cellXfs, no una ranura del pool compuesto; la sobrecarga de siete argumentos acepta un ID de formato numérico integrado que tiene precedencia sobre el índice de formato personalizado aportado, con cero significando sin sobrescritura

TXLSXWorkbook.RegisterLinkedCompositeXf registra adicionalmente el ID del estilo XF padre y las partes de formato enlazadas a ese padre, reteniendo entradas separadas para las combinaciones distintas de padre o enlace; también devuelve un índice absoluto de cellXfs

TXLSXWorkbook.CompositeXfBase devuelve el primer índice compuesto absoluto, calculado a partir de los pools de estilos unidimensionales actuales, mientras que TXLSXWorkbook.CompositeXfCount cuenta las entradas compuestas registradas; una ranura del pool usada por GetCompositeXf es el índice absoluto menos la base, y la base puede cambiar cuando esos pools crecen, de modo que estos valores pertenecen al estado actual de serialización

TXLSXWorkbook.RegisterCondDxf registra una referencia prestada de TXLSDxfStyle y devuelve su ID de estilo diferencial basado en cero, reutilizando un ID existente para la misma referencia de objeto; mantenga vivo el objeto mientras la serialización lo use

TXLSXWorkbook.ResetCondDxfs limpia el conteo del registro activo sin liberar los estilos prestados, y TXLSXWorkbook.CondDxfCount reporta ese conteo; la preparación del guardado reconstruye este registro, así que no persista estos IDs independientemente del paquete que se esté escribiendo

TXLSXWorkbook.PivotCaches es la colección TXLSPivotCaches de propiedad del libro compartida por las tablas dinámicas de las hojas; AddPivotTable reutiliza un caché de fuente coincidente o crea uno, y RefreshPivotCache actualiza el caché identificado preservando las identidades de miembros admitidas

Integración del cálculo

TXLSXWorkbook.RecalcThreads tiene cero como valor predeterminado, con cero o uno usando recálculo en serie y valores mayores habilitando la evaluación por trabajadores de fronteras de fórmulas independientes; los libros con arreglos dinámicos usan una pasada en serie sin importar esta configuración, los nodos de tablas de datos What-If permanecen en serie, y los manejadores de funciones de usuario usados por los trabajadores deben ser thread-safe

TXLSXWorkbook.SolveCycleIteratively es un punto de entrada avanzado invocado normalmente por Recalculate cuando la iteración está habilitada, que consume índices de nodos del grafo de dependencias actual de ese libro y evalúa los nodos de ciclos en el TList aportado; los índices de un grafo del espacio de trabajo o de otro libro no son intercambiables

El resolutor usa IterateCount y IterateDelta, retiene los valores finales incluso si se alcanza el límite de iteración, y devuelve lxOk sin certificar la convergencia; los miembros de ciclos de arreglos dinámicos devuelven lxErrorCircumRef, y el argumento CycleCount de la firma no reemplaza la clasificación de ciclos en los nodos del grafo

Construcción del grafo de dependencias del espacio de trabajo

TXLSWorkspaceDepGraph almacena las dependencias de fórmulas a través de identidades de libros y hojas aportadas por el llamador sin abrir libros ni evaluar fórmulas; construya un grafo a partir de las fórmulas actuales y las referencias resueltas, y luego reconstrúyalo tras cambios estructurales o de fórmulas que invaliden esas referencias

function TXLSWorkspaceDepGraph.AddNode(
  const AWorkbookIdentity, ASheetName: WideString;
  ASheetIndex, ARow, ACol, AOutRow2, AOutCol2: Integer;
  AVolatile: Boolean; AReferences: TXLSWorkspaceDepReferenceList;
  ARefUnstable: Boolean = False): Integer;
procedure TXLSWorkspaceDepGraph.DirtyTopoOrder(AOrder: TList;
  out ACycleNodeCount, ABlockedNodeCount: Integer);

TXLSWorkspaceDepGraph.AddNode agrega un nodo de fórmula y devuelve su índice de nodo basado en cero, copiando las referencias aportadas en lugar de ser dueño de su lista; los índices de hojas están basados en uno, mientras que las coordenadas de filas y columnas, incluida la esquina inferior derecha del rectángulo de salida inclusivo, son coordenadas de la calculadora basadas en cero

TXLSWorkspaceDepReferenceList.Add agrega un registro de referencia resuelta de celda, rango o nombre definido, TXLSWorkspaceDepReferenceList.Items lee esos registros por índice basado en cero, y TXLSWorkspaceDepReferenceList.Clear restablece la lista para reutilizarla; el llamador es dueño de esta lista de entrada y puede limpiarla o liberarla después de que AddNode haya copiado sus entradas

TXLSWorkspaceDepGraph.BuildEdges resuelve las referencias almacenadas de celdas y rangos contra los rectángulos de salida de fórmulas; las referencias marcadas con LookupScan propagan la marca de obsolescencia pero no imponen orden de evaluación ni participan en la detección de ciclos

TXLSWorkspaceDepGraph.NodeIndexOf resuelve un libro, una hoja, una fila y una columna a un índice de nodo basado en cero o -1 cuando está ausente, usando el nombre de la hoja cuando está disponible y el índice de hoja declarado como fallback

TXLSWorkspaceDepGraph.FindDependentsOfDefinedName limpia un TList aportado no nil y lo llena con los índices de nodos que se refieren directamente al símbolo nombrado en el libro y ámbito especificados, con un índice de ámbito negativo coincidiendo con todos los ámbitos; las entradas se codifican como Pointer(NativeInt(NodeIndex)), de modo que una entrada nil de la lista puede representar el nodo cero

Generaciones de obsolescencia y orden de evaluación del espacio de trabajo

TXLSWorkspaceDepGraph.BeginDirtyGeneration inicia una nueva generación, restablece el conteo activo de nodos obsoletos y los indicadores de bloqueo por ciclos, y hace inactivas las marcas de obsolescencia anteriores; llámelo antes de marcar los nodos para una nueva pasada de recálculo

TXLSWorkspaceDepGraph.MarkAllDirty marca cada nodo de la generación actual; TXLSWorkspaceDepGraph.MarkWorkbookDirty siembra los nodos pertenecientes al libro identificado y los nodos que se refieren a él, y luego propaga a los dependientes, mientras que TXLSWorkspaceDepGraph.MarkVolatileDirty siembra los nodos volátiles y TXLSWorkspaceDepGraph.MarkCyclesDirty siembra los componentes de ciclos detectados, propagando también su obsolescencia

TXLSWorkspaceDepGraph.IsNodeDirty reporta si un nodo válido lleva la marca de la generación actual y devuelve False para un índice inválido; TXLSWorkspaceDepGraph.DirtyGeneration expone esa marca y TXLSWorkspaceDepGraph.DirtyNodeCount cuenta los nodos marcados en la generación activa

TXLSWorkspaceDepGraph.DirtyTopoOrder exige un TList de propiedad del llamador no nil, lo limpia y lo llena con los índices de nodos obsoletos en orden de dependencias, excluyendo los nodos de ciclos obsoletos y los nodos bloqueados por esos ciclos; sus dos conteos de salida distinguen a los miembros de ciclos de los nodos posteriores bloqueados, y las entradas de la lista usan la misma convención de índices basados en cero codificados como puntero

TXLSWorkspaceDepGraph.HasRefUnstable reporta si algún nodo fue agregado con el indicador de referencia inestable, lo que permite al llamador evitar depender de una programación estática obsoleta cuando las referencias de fórmulas pueden cambiar en el momento de la evaluación; el grafo no resuelve esas referencias cambiantes por sí mismo

Inspección del grafo del espacio de trabajo

TXLSWorkspaceDepGraph.NodeCount cuenta los nodos de fórmulas, TXLSWorkspaceDepGraph.ReferenceCount cuenta las referencias copiadas, y TXLSWorkspaceDepGraph.EdgeCount reporta las aristas de dependencias construidas; llame a BuildEdges antes de consumir las estadísticas de aristas

TXLSWorkspaceDepGraph.WorkbookCount cuenta las identidades de libros internadas, incluidas las identidades introducidas por referencias, y TXLSWorkspaceDepGraph.WorkbookIdentities las enumera por índice basado en cero; estas cadenas de identidad son claves del grafo, no evidencia de que un archivo externo fue cargado

TXLSWorkspaceDepGraph.ComponentCount reporta el número de componentes fuertemente conexos después de la construcción de componentes, que es activada por MarkCyclesDirty, DirtyTopoOrder o el acceso a componentes; cada registro de Components aporta NodeStart, NodeCount y IsCycle

TXLSWorkspaceDepGraph.ComponentNodes expone el arreglo aplanado de índices de nodos basados en cero para esos componentes, indexado desde el NodeStart de un componente hasta NodeStart + NodeCount - 1; los conteos y registros indexados describen el grafo actual y deberían readquirirse tras la reconstrucción del grafo

Continúe con los miembros adicionales de la fachada XLSX y la visión general de la fachada XLSX para los puntos de entrada ordinarios del libro