Documentación HotXLS

Descripción General

HotXLS Logo
HotXLS Excel Read/Write Library es un componente de lectura y escritura de Excel de alto rendimiento para Delphi y C++Builder Permite crear nuevas hojas de cálculo de Excel y leer o modificar libros de trabajo XLS y XLSX existentes sin necesidad de tener instalado Microsoft Excel u Office en la computadora
HotXLS está escrito completamente en Object Pascal. Lee y escribe archivos de Excel directamente a nivel binario y OOXML, por lo que no existe la sobrecarga de automatización COM/OLE ni dependencia de que Office esté licenciado o presente. HotXLS es compatible con Delphi y C++Builder XE5 hasta 13 Florence
El formato de color XLS clásico permanece intencionalmente basado en paleta. Consulte Modelo de color XLS clásico para conocer la decisión sobre ThemeColor / TintAndShade

Arquitectura de Doble Fachada

HotXLS expone dos unidades de fachada que coexisten, de modo que el código XLS heredado y el nuevo código XLSX pueden convivir sin necesidad de refactorización:
lxHandle Fachada principal para el formato Excel 97–2003 BIFF8 (.xls), además de exportación a HTML, RTF, CSV y TSV Todo el código de usuario existente continúa usando esta unidad sin cambios. Puntos de entrada: TXLSWorkbook, TXLSWorksheet, IXLSWorkbook, IXLSRange
lxHandleX Fachada principal para el formato Excel 2007+ OOXML (.xlsx) y lectura/escritura de OpenDocument Spreadsheet (.ods). Provee sus propios tipos de libro y hoja de trabajo para que el comportamiento específico de XLSX no se incorpore de manera forzada a la ruta de código BIFF. Puntos de entrada: TXLSXWorkbook, TXLSXWorksheet, TXLSXCell
Ambas fachadas comparten el mismo motor de fórmulas, la misma capa de soporte Unicode y el mismo flujo de exportación Consulte Descripción General de la Fachada XLSX para conocer la jerarquía de clases completa expuesta por lxHandleX

Inicio Rápido

Los siguientes fragmentos muestran el código mínimo para crear un libro de trabajo con una hoja de trabajo y escribir un valor en una celda.

XLS Clásico (lxHandle)

uses lxHandle;

var
  Book: IXLSWorkbook;
  ws:   TXLSWorksheet;
begin
  Book := TXLSWorkbook.Create;
  // Agregar una hoja de trabajo y asignarle un nombre
  ws := Book.Sheets.Add;
  ws.Name := 'Sheet1';

  // Escribir valores en celdas usando notación A1
  ws.Range['A1'].Value := 'Hello';
  ws.Range['B1'].Value := 42;
  ws.Range['C1'].Formula := '=B1*2';

  // Aplicar formato básico
  ws.Range['A1'].Font.Bold := True;
  ws.Range['A1'].Interior.Color := clYellow;

  Book.SaveAs('output.xls');
end;

XLSX (lxHandleX)

uses lxHandleX;

var
  Book: TXLSXWorkbook;
  ws:   TXLSXWorksheet;
  cell: TXLSXCell;
begin
  Book := TXLSXWorkbook.Create;
  try
    ws := Book.Sheets.Add('Sheet1');

    // Escribir un valor de texto y uno numérico
    ws.Cells[1, 1].Value := 'Product';
    ws.Cells[1, 2].Value := 'Price';
    ws.Cells[2, 1].Value := 'Widget';
    ws.Cells[2, 2].Value := 9.99;

    // Aplicar un formato de número de moneda
    cell := ws.Cells[2, 2];
    cell.NumberFormat := '$#,##0.00';

    Book.SaveAs('output.xlsx');
  finally
    Book.Free;
  end;
end;
Para un recorrido más completo que abarca ambas fachadas en un único proyecto de demostración, consulte Demo del Recorrido por la API

Características

Entrada/Salida de Archivos y Soporte de Streams

Lea archivos de Excel existentes, escriba archivos de Excel nuevos o existentes, gestione la protección con contraseña de XLS clásico y los flujos de guardado cifrado de XLSX, y liste rápidamente los nombres de hojas de archivos XLS y XLSX o streams sin cargar el libro de trabajo completo. Abrir un CSV como libro de trabajo está soportado mediante IXLSWorkbook.OpenCSV

Valores de Celda y Fórmulas

Lea y escriba valores de celda de todos los tipos nativos de Excel: número, cadena de texto, fecha/hora, booleano y fórmula El motor de cálculo integrado evalúa fórmulas en libros de trabajo XLS clásicos y XLSX, con soporte para:
  • Funciones de texto (LEFT, MID, TRIM, SUBSTITUTE, …)
  • Funciones de fecha y días laborables (DATE, NETWORKDAYS, WORKDAY, …)
  • Funciones de ingeniería y conversión de base (BIN2DEC, HEX2DEC, …)
  • Funciones bit a bit (BITAND, BITOR, BITXOR, …)
  • Funciones estadísticas y de agregación (AVERAGE, SUMIF, COUNTIFS, …)
  • Funciones matemáticas (ROUND, MOD, POWER, …)
Un callback OnUserFunction permite manejar funciones de hoja de trabajo personalizadas o no soportadas en tiempo de ejecución Consulte Callback OnUserFunction para la firma y ejemplos
Ejemplo de evaluación de fórmula

Formato de Celdas

Acceso completo a los atributos de apariencia de las celdas:
  • Fuentes — nombre, tamaño, color (RGB o color de tema + tint), negrita, cursiva, subrayado, tachado, superíndice, subíndice, sombra y contorno
  • Alineación — alineación horizontal y vertical, orientación del texto (ángulo), nivel de sangría, ajuste de texto, reducir para ajustar y orden de lectura (RTL/LTR)
  • Bordes — los cuatro lados y diagonales, estilo de línea, grosor y color RGB / de tema
  • Interior (relleno) — relleno sólido, rellenos de patrón, colores de primer plano y fondo incluyendo color de tema con TintAndShade
  • Formatos de número — cadenas de formato integradas y personalizadas para fecha, hora, moneda, porcentaje y notación científica
  • Comentarios / anotaciones — agregar, leer y dar estilo a los comentarios de celda

Operaciones de Rango

IXLSRange (fachada clásica) y TXLSXRange (fachada XLSX) ofrecen un amplio conjunto de operaciones de rango:
  • Combinar y separar celdas; acceder al área combinada de cualquier celda
  • Copiar, mover, insertar y eliminar rangos con control de dirección de desplazamiento
  • Agrupar y desagrupar filas o columnas para vistas de esquema/contraer
  • Ajustar automáticamente el alto de filas y el ancho de columnas al contenido de las celdas
  • Aplicar estilos de celda con nombre integrados (ApplyBuiltinStyle)
  • Selecciones de múltiples áreas (TXLSWorksheet.SelectAreas)
  • Callback de iteración ForEachCell para procesamiento por lotes de celdas

Características de Hoja de Trabajo

El control a nivel de hoja de trabajo incluye:
  • Nombre de hoja, color de pestaña, visibilidad (oculta / muy oculta) y navegación basada en índice
  • Protección de hoja con granularidad por permiso; protección a nivel de libro de trabajo
  • Inmovilizar paneles, dividir paneles y posición de desplazamiento
  • Rangos de AutoFiltro con criterios; reglas de validación de datos de lista
  • Formato condicional: escalas de color (2 y 3 colores), barras de datos y conjuntos de íconos
  • Buscar y reemplazar texto en una hoja de trabajo
  • Opciones de vista: color de líneas de cuadrícula, modo de mostrar fórmulas, mostrar ceros, mostrar encabezados, mostrar de derecha a izquierda, mostrar símbolos de esquema y nivel de zoom
  • Tablas estructuradas (TXLSTable / TXLSXTable): agregar, acceder y dar estilo a tablas de Excel con filas de encabezado y filas alternas
  • Gráficos: agregar hojas de gráficos y gráficos incrustados mediante TXLSWorksheetsAddChartSheet y TXLSXChart

Hipervínculos y Rangos con Nombre

Agregue y lea hipervínculos (URL, mailto y referencias de celda dentro del libro) mediante IXLSHyperLinks. Defina y resuelva rangos con nombre en el ámbito del libro de trabajo y de la hoja de trabajo mediante IXLSNames / TXLSXDefinedNames. Los rangos con nombre pueden usarse en fórmulas y resolverse de vuelta a un rango de celdas mediante RefersToRange

Imágenes y Formas

Inserte imágenes raster (BMP, JPG, PNG, GIF) en hojas de trabajo mediante TXLSShapes.AddPicture / TXLSXWorksheet.AddImage. Cree cuadros de texto independientes en XLS clásico mediante TXLSShapes.AddTextBox. Preserve las reglas de conector y solucionador de OfficeArt creadas en Excel en dibujos BIFF8, y exponga las opciones FOPT de forma sin procesar mediante TXLSShape.OfficeArtOptions para flujos de trabajo de dibujo avanzados

Configuración de Página e Impresión

Acceso completo al diseño de impresión mediante IXLSPageSetup:
  • Tamaño de papel (A4, Carta, Legal y muchos otros; consulte PaperSize)
  • Orientación (vertical / horizontal), márgenes, centrar horizontal y verticalmente
  • Cadenas de encabezado y pie de página con códigos de formato de Excel (negrita, cursiva, número de página, fecha, etc.; consulte Códigos de formato de encabezado/pie de página)
  • Saltos de página manuales horizontales y verticales
  • Escala para ajustar a páginas; porcentaje de zoom; área de impresión; títulos de impresión (repetir filas / columnas)
  • Calidad de borrador; blanco y negro; imprimir líneas de cuadrícula; imprimir encabezados; imprimir notas

Formatos de Exportación

Exporte libros de trabajo completos, hojas de trabajo individuales o rangos de celdas arbitrarios a:
  • HTML — documento completo o un fragmento de tabla en línea para vista previa o flujos de trabajo de correo electrónico; configurable mediante TXLSHTMLExport y TXLSXHtmlExportOptions
  • RTF — texto enriquecido para importación en procesadores de texto
  • CSV — valores separados por comas con delimitador y codificación configurables
  • TSV — valores separados por tabulaciones
  • ODS — OpenDocument Spreadsheet mediante la fachada lxHandleX

Exportación de Base de Datos y Grilla

Exporte cualquier conjunto de datos compatible con TDataSet o un TDBGrid directamente a Excel, HTML o RTF usando los componentes TDataToXLS o TGridToXLS Ambos componentes disparan los eventos AfterCell, AfterRow, AfterTitle y AfterGroup para un control detallado de la salida, y admiten campos de agrupación de múltiples niveles

Preservación del Proyecto VBA

HotXLS preserva los payloads del proyecto VBA al hacer round-trip de libros con macros habilitadas. La inspección de módulos en modo de solo lectura está disponible mediante TXLSVBAProject y TXLSVBAModule Use IXLSWorkbook.HasVBAProject para detectar un payload y LoadVBAProjectFromFile / SaveVBAProjectToFile para transferirlo entre archivos

Unicode y Texto Internacional

Todo el manejo de cadenas es Unicode nativo. HotXLS lee y escribe archivos de Excel creados en cualquier idioma, incluyendo CJK, árabe, hebreo, tailandés y otros sistemas de escritura, con soporte correcto de texto bidireccional y orden de lectura
Ejemplo de soporte de caracteres Unicode

Tablas Dinámicas (XLS Clásico)

Cree tablas dinámicas desde un rango de origen con TXLSWorksheet.AddPivotTable, configure la ubicación de campos y los formatos de número de campos de datos, e inspeccione el modelo de tabla dinámica mediante TXLSWorksheet.PivotTables Consulte API de tablas dinámicas XLS clásico para detalles sobre campos y filtros

Ventajas

No Office dependency Lee y escribe archivos XLS y XLSX directamente a nivel binario. No es necesario tener instalado, licenciado ni en ejecución Microsoft Excel u Office. Esto elimina la sobrecarga de automatización COM/OLE, evita las restricciones de subprocesos impuestas por la interoperabilidad con Office y permite usar HotXLS en contextos de servidor y servicios donde una instalación de escritorio de Office no es práctica
High performance Los analizadores BIFF8 y OOXML están escritos en Object Pascal nativo sin asignación intermedia de DOM XML en la ruta crítica. Los libros de trabajo de gran tamaño con cientos de miles de filas pueden leerse y escribirse con un pico de memoria bajo. La deduplicación de cadenas compartidas y la compresión de fórmulas compartidas se aplican automáticamente para mantener los tamaños de archivo pequeños
OLE migration path La superficie de la API de la fachada clásica (libro de trabajo, hoja de trabajo, rango, fuente, bordes, interior, configuración de página) refleja de cerca el modelo de objetos de Excel familiar de la Automatización OLE. Esto hace que migrar proyectos basados en OLE sea sencillo: reemplace las llamadas COM por llamadas a HotXLS, elimine la dependencia de Office y obtenga rendimiento nativo
Dual-facade design El código XLS heredado continúa compilando y ejecutándose sin cambios con lxHandle, mientras que el nuevo código XLSX usa la fachada más rica lxHandleX. Migrar un formato de archivo a la vez es seguro e incremental
Formula engine included Un motor de cálculo multipaso integrado maneja las funciones de hoja de trabajo más comunes sin necesidad de que Excel recalcule al abrir. Las funciones personalizadas se gestionan mediante el callback OnUserFunction
Easy to use Los componentes Delphi de tipo drop-in (TDataToXLS, TGridToXLS) no requieren código para las tareas de exportación más comunes. La API de rango fluida admite notación A1, notación R1C1 e indexación de filas/columnas basada en cero
Thread-safe file I/O Dado que no hay un proceso de Office compartido, múltiples instancias de TXLSXWorkbook pueden crearse y guardarse de forma concurrente en subprocesos independientes sin sincronización, lo que hace que HotXLS sea adecuado para servidores de generación de reportes con múltiples subprocesos

Compatibilidad

HotXLS es compatible con las siguientes versiones de RAD Studio:
Delphi XE5, XE6, XE7, XE8, 10 Seattle, 10.1 Berlin, 10.2 Tokyo, 10.3 Rio, 10.4 Sydney, 11 Alexandria, 12 Athens, 13 Florence
C++Builder XE5, XE6, XE7, XE8, 10 Seattle, 10.1 Berlin, 10.2 Tokyo, 10.3 Rio, 10.4 Sydney, 11 Alexandria, 12 Athens, 13 Florence
Target platforms Windows 32 bits y 64 bits
Excel file formats XLS (BIFF8, Excel 97–2003), XLSX (OOXML, Excel 2007+), ODS (OpenDocument 1.2)
Export-only formats HTML, RTF, CSV, TSV

Véase También