Documentación de HotXLS

Visión general

HotXLS Logo
La biblioteca de lectura/escritura de Excel HotXLS es un componente de lectura y escritura de Excel de alto rendimiento para Delphi y C++Builder Puede 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 máquina
HotXLS está escrito completamente en Object Pascal. Lee y escribe archivos de Excel directamente a nivel binario y OOXML, por lo que no hay sobrecarga de automatización COM/OLE y ninguna dependencia de la presencia o licencia de Office. HotXLS es compatible con Delphi y C++Builder XE5 hasta 13 Florence
El formato de color clásico de XLS permanece intencionalmente basado en paleta. Consulte Modelo de color XLS clásico para la decisión sobre ThemeColor / TintAndShade

Arquitectura de doble fachada

HotXLS expone dos unidades de fachada coexistentes para que el código XLS heredado y el nuevo código XLSX puedan coexistir sin ninguna refactorización:
lxHandle Fachada principal para el formato Excel 97–2003 BIFF8 (.xls), además de exportación 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). Proporciona sus propios tipos de libros y hojas de cálculo para que el comportamiento específico de XLSX no se agregue retroactivamente 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 compatibilidad Unicode y la misma canalización de exportación Consulte Visión general de la fachada XLSX para ver 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 cálculo 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 cálculo y darle 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 una cadena y un valor 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 amplio que cubra ambas fachadas en un solo proyecto de demostración, consulte la Demostración del tour de la API (API Tour Demo)

Características

Soporte de E/S de archivos y flujos

Lea archivos de Excel existentes, escriba archivos de Excel nuevos o existentes, maneje los flujos de trabajo de protección de contraseñas de XLS clásicos y guardado cifrado de XLSX, y enumere rápidamente los nombres de las hojas a partir de archivos o flujos XLS y XLSX sin cargar todo el libro de trabajo. Abrir un CSV como libro de trabajo es compatible a través de IXLSWorkbook.OpenCSV

Valores de celdas y fórmulas

Lea y escriba valores de celdas de todos los tipos nativos de Excel: número, cadena, fecha/hora, booleano y fórmula El motor de cálculo integrado evalúa fórmulas tanto en libros XLS clásicos como XLSX, soportando:
  • Funciones de texto (LEFT, MID, TRIM, SUBSTITUTE, …)
  • Funciones de fecha y días laborales (DATE, NETWORKDAYS, WORKDAY, …)
  • Funciones de ingeniería y conversión de bases (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, …)
Una devolución de llamada OnUserFunction le permite manejar funciones de hoja de cálculo personalizadas o no compatibles en tiempo de ejecución. Consulte Devolución de llamada 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 + matiz), 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 bordes 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, incluido el color de tema con TintAndShade
  • Formatos numéricos — cadenas de formato integradas y personalizadas para fecha, hora, moneda, porcentaje y notación científica
  • Comentarios / anotaciones — agregar, leer y dar estilo a comentarios de celdas

Operaciones de rango

IXLSRange (fachada clásica) y TXLSXRange (fachada XLSX) proporcionan 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 la dirección de desplazamiento
  • Agrupar y desagrupar filas o columnas para vistas de esquema/contracción
  • Ajuste automático (AutoFit) de la altura de la fila y el ancho de la columna al contenido de la celda
  • Aplicar estilos de celda con nombre integrados (ApplyBuiltinStyle)
  • Selecciones de áreas múltiples (TXLSWorksheet.SelectAreas)
  • Devolución de llamada de iteración ForEachCell para el procesamiento por lotes de celdas

Características de la hoja de cálculo

El control a nivel de hoja de cálculo incluye:
  • Nombre de la hoja, color de la pestaña, visibilidad (oculto / muy oculto) y navegación basada en índices
  • Protección de la hoja con granularidad por permisos; protección a nivel de libro de trabajo
  • Inmovilizar paneles, dividir paneles y posición de desplazamiento
  • Rangos de AutoFilter 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 iconos
  • Buscar texto y reemplazar texto en toda una hoja de cálculo
  • Opciones de visualización: color de las líneas de cuadrícula, modo de visualización de fórmulas, visualización de ceros, visualización de encabezados, visualización de derecha a izquierda, visualización de símbolos de esquema y nivel de zoom
  • Tablas estructuradas (TXLSTable / TXLSXTable): agregue, acceda y diseñe tablas de Excel con filas de encabezado y filas con bandas
  • Gráficos: agregue hojas de gráficos y gráficos incrustados a través de TXLSWorksheetsAddChartSheet y TXLSXChart

Hipervínculos y rangos con nombre

Agregue y lea hipervínculos (URL, mailto y referencias a celdas en el libro de trabajo) a través de IXLSHyperLinks. Defina y resuelva rangos con nombre a nivel de libro de trabajo y hoja de cálculo a través de IXLSNames / TXLSXDefinedNames. Los rangos con nombre se pueden usar en fórmulas y resolver en un rango de celdas a través de RefersToRange

Imágenes y formas

Incruste imágenes rasterizadas (BMP, JPG, PNG, GIF) en hojas de cálculo a través de TXLSShapes.AddPicture / TXLSXWorksheet.AddImage. Cree cuadros de texto independientes en XLS clásico a través de TXLSShapes.AddTextBox. Preserve los conectores OfficeArt creados por Excel y las reglas del solucionador en dibujos BIFF8, y exponga las opciones FOPT sin procesar de formas a través de TXLSShape.OfficeArtOptions para flujos de trabajo de dibujo expertos

Configuración de página e impresión

Acceso completo al diseño de impresión a través de IXLSPageSetup:
  • Tamaño del papel (A4, Carta, Legal y muchos otros; consulte Tamaño de papel (PaperSize))
  • Orientación (vertical / horizontal), márgenes, centrado horizontal / vertical
  • 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 horizontales y verticales manuales
  • Escalado para ajustar a las 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 cálculo 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; controlable a través de 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 a través de la fachada lxHandleX

Exportación de bases de datos y cuadrículas

Exporte cualquier conjunto de datos compatible con TDataSet o un TDBGrid directamente a Excel, HTML o RTF utilizando los componentes TDataToXLS o TGridToXLS Ambos componentes disparan 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 de proyectos VBA

HotXLS conserva las cargas útiles de proyectos VBA cuando se leen y escriben libros de trabajo habilitados para macros. La inspección de solo lectura del módulo está disponible a través de TXLSVBAProject y TXLSVBAModule Llame a IXLSWorkbook.HasVBAProject para detectar una carga útil y LoadVBAProjectFromFile / SaveVBAProjectToFile para transferirla entre archivos

Unicode y texto internacional

Toda la manipulación de cadenas es nativa de Unicode. HotXLS lee y escribe archivos de Excel creados en cualquier idioma, incluyendo CJK, árabe, hebreo, tailandés y otros scripts, con soporte correcto para texto bidireccional y orden de lectura
Ejemplo de compatibilidad con caracteres Unicode

Tablas dinámicas (XLS clásico)

Cree tablas dinámicas a partir de un rango de origen con TXLSWorksheet.AddPivotTable, configure la ubicación de los campos y los formatos numéricos de los campos de datos, e inspeccione el modelo de tabla dinámica a través de TXLSWorksheet.PivotTables Consulte API de tablas dinámicas XLS clásico para obtener 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 de Office y permite el uso de HotXLS en contextos de servicios y del lado del servidor 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 de DOM XML intermedia para la ruta crítica. Los libros de trabajo grandes con cientos de miles de filas se pueden leer y escribir con un bajo uso de memoria pico. La deduplicación de cadenas compartidas y la compresión de fórmulas compartidas se aplican automáticamente para mantener pequeño el tamaño del archivo
OLE migration path La superficie de API de la fachada clásica (libro, hoja, 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 simplifica la migración de proyectos existentes basados en OLE: reemplace las llamadas COM con llamadas HotXLS, elimine la dependencia de Office y obtenga rendimiento nativo
Dual-facade design El código XLS antiguo continúa compilándose y ejecutándose sin cambios frente a lxHandle, mientras que el nuevo código XLSX utiliza la fachada más rica lxHandleX. La migración de un formato de archivo a la vez es segura e incremental
Formula engine included Un motor de cálculo multipaso incorporado maneja las funciones de hoja de cálculo más comunes sin requerir que Excel vuelva a calcular al abrir. Las funciones personalizadas se manejan mediante la devolución de llamada OnUserFunction
Easy to use Los componentes de Delphi directos (TDataToXLS, TGridToXLS) no requieren código para tareas comunes de exportación. La API de rango fluida admite la notación A1, la notación R1C1 y la indexación de filas/columnas basada en cero
Thread-safe file I/O Debido a que no hay un proceso de Office compartido, se pueden crear y guardar múltiples instancias de TXLSXWorkbook simultáneamente en subprocesos independientes sin sincronización, lo que hace que HotXLS sea adecuado para servidores de generación de informes multiproceso

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 de 32 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

Consulte también