Documentación de HotXLS

Celdas y rangos

Una tarea habitual al usar HotXLS es especificar una celda o un rango de celdas y luego realizar alguna acción, como ingresar un valor o cambiar el formato
Un objeto Range en HotXLS puede ser una sola celda o un rango de celdas. Los siguientes temas muestran las formas más comunes de identificar y trabajar con objetos Range
 
»Notación A1 de celdas y rangos
»Números de índice de celda
»Números de índice de rango
»Referencia a filas
»Referencia a columnas
»Desplazamiento Offset de rango

Inspección acotada de celdas de gráfico almacenadas en Classic

TXLSWorksheet.ReadCachedChartCell(Row, Col, MaxBytes, MaxTextCharacters) lee coordenadas Classic XLS de base 0 sin crear celdas, calcular fórmulas, clonar fórmulas compiladas, precalentar la caché de cadenas compartidas ni cambiar la generación del libro

El TXLSCachedChartCell devuelto trae Kind: TXLSCachedChartCellKind, Number: Double, Text: WideString, ReadBytes: Int64, TextCharacters: Int64, Generation: UInt64 y CacheState: TXLSFormulaCacheState; ccckAbsent representa contenido ausente o vacío y celdas combinadas que no son ancla, ccckNumber representa un resultado numérico finito y ccckText contiene una cadena UTF-16 contada y separada

Las celdas con fórmula exigen una caché almacenada xlfcsLoaded o xlfcsCalculated; una caché ausente o invalidada lanza EInvalidOperation en lugar de evaluar su fórmula, mientras que una caché vacía o null almacenada devuelve ccckAbsent

La longitud de la cadena compartida y la de una caché varUString o varOleStr se comprueban antes de copiar, preservando caracteres NUL incrustados y unidades de código sustitutas; los arreglos, las variantes por referencia, los errores, los valores Boolean, las cachés ANSI varString y los tipos de caché desconocidos quedan explícitamente sin soporte

Un resultado de texto de n unidades de código UTF-16 consume ReadBytes = 4*n y TextCharacters = 2*n por el origen contado y la salida separada; un número consume ocho bytes y ningún carácter de texto, y la ausencia no consume nada

El método rechaza límites negativos con EArgumentOutOfRangeException, coordenadas fuera de las filas 0 a 65535 o de las columnas 0 a 255 con ERangeError, y límites excedidos o valores no finitos con EInvalidOperation; además, quien llama debe presupuestar cualquier formato numérico o texto de categoría copiado que se derive del valor devuelto

Las fechas de calendario almacenadas y las cachés de fórmula tipadas varDate siguen el ajuste Date1904 vigente del libro, mientras que los doubles numéricos ordinarios conservan su valor almacenado exacto; una fecha de calendario almacenada en el intervalo fantasma de 1900 [60, 61) se rechaza en lugar de tratarse como fecha real

TXLSWorksheet.IsCachedChartCellVisible(Row, Col) usa los mismos límites de coordenadas de base 0 y lee los flags almacenados de fila y columna ocultas sin materializar; una captura de gráfico que solo deba trazar celdas visibles tiene que comprobar este resultado y aplicar su política documentada de datos ocultos

Ambos métodos adquieren un lease de lectura anidado del libro; un origen de gráfico multicelda debe retener un lease externo, verificar la Generation devuelta, resolver las referencias de fórmula contra el libro prestado exacto y la hoja local sin referencias externas ni de expansión, y validar los límites de referencia y la procedencia de la fórmula antes de usar estos valores

Imágenes dentro de celdas y casillas de verificación en XLSX

TXLSXCell.SetInCellImage(Data, ContentType, AltText, Decorative) almacena un PNG o JPEG local como contenido de celda, con los bytes codificados copiados y un grafo de metadatos de rich value dentro del paquete XLSX

El setter valida los límites de chunk del PNG, sus checksums y su marcador de fin, o los marcadores de frame y contenedor del JPEG, antes de tocar la celda; la decodificación del ráster sigue siendo responsabilidad del renderer

ContentType es image/png o image/jpeg, Decorative es False por defecto y AltText se conserva como metadatos de la imagen

SetInCellImage reemplaza la fórmula, el contenido en caché y el texto enriquecido, rechaza celdas con fórmula de matriz y usa #VALUE! como valor de respaldo ordinario de la celda; la biblioteca no calcula la función IMAGE ni descarga imágenes remotas

InCellImage devuelve un TXLSInCellImageSnapshot separado con Availability: TXLSCellFeatureAvailability, Data, ContentType, AltText, Decorative y CalcOrigin; xlcfaAbsent significa que no hay metadatos de imagen, xlcfaSupported que hay un PNG o JPEG local resuelto y xlcfaUnsupported que los metadatos existentes no pueden interpretarse con seguridad

ClearInCellImage elimina la imagen y limpia su valor de respaldo; asignar otro valor o fórmula elimina la imagen como parte del reemplazo del contenido de la celda

TXLSXCell.SetCheckbox(DefaultState: TXLSCheckboxDefaultState) crea un formato de control de celda e inicializa el valor con xlcdUnchecked, xlcdChecked o xlcdBlank; el valor por defecto es xlcdUnchecked

CellControl devuelve un TXLSCellControlSnapshot con Kind: TXLSCellControlKind, DefaultState y el Value subyacente; los kinds son xlcctNone, xlcctUnknown y xlcctCheckbox

El formato de Checkbox pertenece al formato de celda, así que asignar valores o fórmulas lo conserva y Range.Clear limpia el contenido reteniendo el formato; ClearCellControl quita ese formato preservando el valor, y Range.ClearAll quita ambos

TXLSXWorksheet.ReadInCellImage(Row, Col, MaxBytes) y TXLSXWorksheet.ReadCellControl(Row, Col) leen coordenadas de base 1 bajo un lease de lectura sin crear celdas ausentes ni recalcular fórmulas; MaxBytes es High(Int64) por defecto y rechaza una imagen demasiado grande antes de copiar sus bytes

Los estilos explícitos a nivel de celda, los metadatos locales de imagen, el estado por defecto del Checkbox y los valores Boolean sobreviven a guardar y recargar XLSX, a copias y movimientos de rangos, a ediciones estructurales de filas o columnas y a la restauración de instantáneas de contenido del mismo libro; las copias soportadas entre libros reconstruyen las referencias de destino

Los property bags de control desconocidos, los tipos de rich value y las referencias mal formadas siguen explícitamente sin soporte; los guardados Open XML ordinarios conservan sus metadatos de origen cuando PreserveUnsupportedParts está activado, mientras que copiar metadatos desconocidos de funciones de celda a otro libro se rechaza antes de modificar el destino

Agregar una función soportada a un property bag importado o a un grafo de imágenes con un namespace no soportado o relaciones de propiedad en conflicto se rechaza al guardar, en lugar de reconstruir ese grafo a partir de metadatos adivinados

Formatos heredados dispersos de Checkbox

TXLSXWorksheet.SetRowCheckboxFormat(FirstRow, LastRow, DefaultState) y SetColumnCheckboxFormat(FirstCol, LastCol, DefaultState) aplican un tramo inclusivo de base 1 sobre el eje sin crear celdas ni inicializar valores; DefaultState es xlcdUnchecked por defecto

ClearRowCellControlFormat(FirstRow, LastRow) y ClearColumnCellControlFormat(FirstCol, LastCol) limpian explícitamente el formato heredado correspondiente preservando los valores; los tramos inválidos lanzan EArgumentOutOfRangeException antes de mutar

Los controles directos de celda y las limpiezas directas tienen precedencia sobre los formatos heredados, las regiones finitas de formato copiado la tienen sobre las filas, y las filas sobre las columnas sin importar el orden de asignación; gana la última asignación dentro del mismo nivel

Un elemento de celda importado tiene un XF por defecto directo cuando se omite su atributo s, preservando las máscaras de limpieza vacías que Excel escribe sin un índice cero explícito; los elementos de celda ausentes siguen heredando el formato del eje

Una celda ausente conserva Value = Unassigned incluso cuando su valor por defecto heredado del Checkbox es checked; ese valor por defecto es metadato de inserción y no fabrica un valor Boolean durante la lectura o el renderizado

La asignación de FormatIndex reemplaza el formato de control directo, incluida una asignación cero explícita que enmascara los controles heredados; los cambios parciales de fuente, relleno, borde, número, alineación o protección conservan el formato de control

Los formatos heredados sobreviven a ediciones estructurales, a copias soportadas de rangos y hojas y a roundtrips XLSX; una copia entre libros remapea los property bags conocidos y rechaza los metadatos heredados de control desconocidos antes de modificar el destino

El guardado y la normalización semántica comprueban la complejidad dispersa de los límites antes de recorrerla, con topes de 1,000,000 particiones y 16,000,000 comprobaciones estimadas de resolución de overlays; un grafo de control excesivamente fragmentado lanza EXLSXSemanticBudget en lugar de arrancar un recorrido cartesiano sin acotar

TXLSXRange.ApplyFormatPatch acepta xfpCellControl para copiar el formato Checkbox vigente o limpiarlo sin cambiar valores, reemplazando los formatos de control directos existentes y rechazando controles desconocidos antes de mutar el destino

TXLSXCellStyleState.CellControlSlot es la representación en overlays: cero es una limpieza explícita, 1 a 3 identifican los valores por defecto unchecked, checked y blank del Checkbox, y las ranuras negativas referencian XFs de función importados; los números de ranura importados pertenecen a su libro y deben remapearse al copiar entre libros

Las instantáneas de control de solo lectura y la comparación semántica usan el formato disperso vigente sin materializar celdas ausentes; las instantáneas de contenido preservan las máscaras de control directas, y CellImageCount cuenta los portadores de imágenes dentro de celdas almacenados, soportados o no, sin copiar bytes de imagen

La captura portable dibuja los valores Boolean del Checkbox y rechaza explícitamente la apariencia blank o no Boolean; la cuota de cuadrícula solicitada se comprueba antes de recorrer un tramo heredado grande

Estas APIs están disponibles en las celdas de TXLSXWorkbook; el motor Classic XLS no expone la creación moderna de controles de celda ni de imágenes de rich value

GetConversionReport reporta las pérdidas de imágenes dentro de celdas y de controles de celda en la salida OpenDocument y XLSB, que conserva los valores de respaldo omitiendo los metadatos modernos de la función; use el guardado verificado para revisar o rechazar esas pérdidas

El grafo del paquete sigue la especificación de rich value para imágenes locales y la especificación del property bag de la función Checkbox de Microsoft; que una versión concreta de Excel las tenga no establece soporte en esta biblioteca, y los roundtrips de la biblioteca no establecen equivalencia de renderizado nativo en una versión de Excel sin estas funciones

La prueba de compatibilidad en Excel 16.0 build 20430 abrió y guardó el paquete Checkbox generado, pero no expuso ninguna API utilizable para autoría de Checkbox o de imágenes locales dentro de celdas; abrió el paquete de imágenes con los flags de metadatos de rich value requeridos y reemplazó su imagen local no soportada por #FIELD! al volver a guardar