Descripción general de la fachada XLSX (lxHandleX)
lxHandleX es la unidad de fachada dedicada para los flujos de trabajo de libros de Excel 2007+ (.xlsx) y hoja de cálculo OpenDocument (.ods). Coexiste con la fachada original lxHandle para que el código heredado siga funcionando sin ningún cambio:
lxHandle— fachada principal para el formato BIFF de Excel 97-2003 (.xls), y exportaciones HTML, RTF, CSV y TSV. Todo el código de usuario existente continúa usando esta unidad sin cambioslxHandleX— fachada principal para el formato OOXML de Excel 2007+ (.xlsx) y los flujos de trabajo de lectura/escritura ODS. Proporciona sus propios tipos de libro y hoja de cálculo para que el comportamiento específico de XLSX no se adapte a la ruta de código BIFF, y expone la importación ODS, la exportación y la detección automática de ODS medianteOpen,SourceFormatyTODSExportOptions
Jerarquía de clases
La fachada XLSX expone las siguientes clases:
type
TXLSXWorkbook = class // top-level workbook with SaveAs / Open
TXLSXHtmlExportOptions = class // HTML document, style, BOM, and table class options
TODSExportOptions = class // ODS export options for generator, chart, and image output
TXLSXSheets = class // worksheet collection on the workbook
TXLSXFonts = class // workbook-level font palette
TXLSXFont = class // single font descriptor
TXLSXFills = class // workbook-level fill palette
TXLSXFill = class // single fill (pattern + fg/bg color)
TXLSXBorders = class // workbook-level border palette
TXLSXBorder = class // four edges + diagonal border
TXLSXNumberFormats = class // workbook-level custom format codes
TXLSXDefinedNames = class // workbook-level named ranges
TXLSXWorksheet = class // single worksheet with cells and decorations
TXLSXStructuralEditRegistry = class // ordered application participants for row and column reference updates
TXLSXCells = class // cell collection on the worksheet
TXLSXCell = class // single cell (value, formula, *Index style refs)
TXLSXRange = class // rectangular worksheet range wrapper
TXLSXMergedCells = class // merged-range collection
TXLSXHyperlinks = class // hyperlink collection
TXLSXComments = class // cell-comment collection
TXLSXImages = class // image collection (drawings + media)
TXLSXConditionalFormats = class // conditional formatting rules
TXLSXDataValidations = class // data-validation rules
TXLSXTables = class // Excel-style table collection
TXLSXCharts = class // chart collection (anchored or full-page)
TXLSXChart = class // single or combination chart with primary, secondary, date, value, and series axes
TXLSXChartPlotGroup = class // ordered chart-family group with its own series and axis pair
TXLSXChartSeries = class // chart series with formula ranges and typed literal caches
TXLSXTextBox = class // standalone worksheet drawing text box
TXLSXRichText = class // per-run rich-text payload for cells
TXLSXAlignment = class // cell alignment / wrap / indent / rotation
TXLSXExternalLinks = class // external workbook link collection
TXLSXExternalLink = class // single external workbook reference (Target URL + SheetNames)
TXLSConnections = class // external data connection collection
TXLSConnection = class // database, web, text, and refresh connection metadata
TXLSQueryTables = class // worksheet query-result collection
TXLSQueryTable = class // query ownership, fields, and result binding
Estas clases son independientes de lxHandle.TXLSWorkBook y
lxHandle.TXLSWorksheet. Las aplicaciones que necesitan ambos
formatos pueden usar ambas fachadas una junto a la otra:
uses
lxHandle, // XLS / HTML / RTF / CSV workbook (TXLSWorkBook)
lxHandleX; // XLSX workbook (TXLSXWorkbook)
Inicio rápido
La fachada XLSX sigue las mismas convenciones de llamada que la fachada
BIFF — SaveAs / Open en el libro de trabajo,
Sheets.Add / Sheets[i] en la colección de hojas de
cálculo, y Cells.Item[Row, Col].Value en la colección de
celdas. El siguiente ejemplo escribe un libro pequeño que ejercita todas las
funciones compatibles actualmente:
uses lxHandleX;
var
wb: TXLSXWorkbook;
ws: TXLSXWorksheet;
bold, yellow, box, currency: Integer;
begin
wb := TXLSXWorkbook.Create;
try
bold := wb.Fonts.Add('Calibri', 12, True, False);
yellow := wb.Fills.AddSolid($FFFFFF00);
box := wb.Borders.AddBox(xlsxBorderThin);
currency := wb.NumberFormats.Add('"$"#,##0.00');
ws := wb.Sheets.Add('Demo');
ws.Cells.Item[1, 1].Value := 'Hello';
ws.Cells.Item[1, 1].FontIndex := bold + 1;
ws.Cells.Item[1, 2].Value := 123.45;
ws.Cells.Item[1, 2].NumberFormatIndex := currency + 1;
ws.Cells.Item[2, 1].Value := Now; // tagged as date
ws.Cells.Item[2, 2].Formula := 'SUM(B1:B1)';
ws.Cells.Item[3, 1].FillIndex := yellow + 1; // highlight cell
ws.Cells.Item[3, 2].BorderIndex := box + 1; // boxed cell
ws.ColWidth[1] := 24;
ws.RowHeight[1] := 28;
ws.MergeCells(4, 1, 4, 3);
ws.Range['A8:C10'].Merge(True); // merge across rows
ws.AddHyperlink(5, 1, 'https://www.loslab.com', 'Visit losLab');
ws.AddComment(5, 2, 'Important note', 'Kevin');
ws.AddImageFromFile(6, 1, 'logo.png');
ws.AddConditionalFormat('B1:B10', xlsxCfOpGreaterThan, '100');
ws.AddListValidation('C1:C5', 'Yes,No,Maybe');
wb.DefinedNames.Add('SalesData', 'Demo!$A$1:$B$10');
wb.SaveAs('demo.xlsx');
finally
wb.Free;
end;
end;
Funciones compatibles
- Valores de celda: números, booleanos, cadenas, fechas, fórmulas
- Tabla de cadenas compartidas (
xl/sharedStrings.xml) con deduplicación en la ruta de escritura - Paletas de estilo a nivel de libro —
Workbook.Fonts,Fills,BordersyNumberFormats— más elFontIndex/FillIndex/BorderIndex/NumberFormatIndexpor celda. SaveAs emite bloques reales<fonts>/<fills>/<borders>/<numFmts>+<cellXfs>; Open los analiza de nuevo para que Name/Size/Bold/Italic/Color, los patrones de relleno, los bordes y los formatos de número personalizados sobrevivan al ciclo completo - Anchos por columna mediante
Worksheet.ColWidth[Col]y alturas por fila medianteWorksheet.RowHeight[Row](bloque<cols>de la hoja y atributos<row>ht) - Built-in date
cellXfde fecha integrado en el índiceXlsxXfIndexDate; los valoresTDateTimese etiquetan automáticamente - Celdas combinadas (
<mergeCells>), incluidoTXLSXRange.Merge(True)para combinar al estilo Excel a lo largo de las filas - Rangos de hoja de cálculo mediante
Worksheet.Range,RCRange,UsedRange,EntireRowyEntireColumn. Consulte TXLSXRange para valores por lotes, fórmulas,SetArrayFormula, índices de estilo, formatos de número, bordes, indicadores de protección, ajuste automático, combinación, desplazamiento, redimensionado, ordenación multiclaveSort, estilos integrados de celdaApplyBuiltinStyle, asistentes de copiar/mover, asistentes de insertar/eliminar toda la fila o columna, y exportación HTML del rango seleccionado - Hipervínculos (
<hyperlinks>) respaldados por rels por hoja de cálculo para URL externas - Comentarios de celda con dibujo VML (
xl/commentsN.xml+xl/drawings/vmlDrawingN.vml) para que los bocadillos se muestren en Excel - Imágenes incrustadas (PNG / JPEG / GIF / BMP) mediante
Worksheet.Images, escritas enxl/media/imageN.<ext>más el XML de dibujo y las rels por hoja - Cuadros de texto de dibujo independientes mediante
Worksheet.AddTextBox, escritos como formas de dibujo de la hoja con cuerpo de texto en lugar de comentarios de celda, con búsqueda directa de anclas y asistentes de eliminación de rangos - Rangos con nombre a nivel de libro mediante
Workbook.DefinedNames(con ámbito de libro o de hoja a través deSheetIndex) - Cálculo de fórmulas mediante
Workbook.CalculateyWorksheet.Calculate, que comparten el analizador y evaluador de fórmulas XLS para fórmulas con signo igual inicial, referencias a celdas y rangos, celdas de fórmula referenciadas, referencias entre hojas, rangos con nombre y funciones compatibles de texto, fecha, día laborable, ingeniería/conversión de base, bit a bit, estadísticas, agregados y matemáticas; useWorkbook.OnUserFunctionoWorkbook.OnUserFunctionExpara resolver funciones personalizadas o no compatibles - Formato condicional por hoja de cálculo
(
Worksheet.ConditionalFormats) y validación de datos (Worksheet.DataValidations), incluido el acceso directo de lista desplegableAddListValidation(Range, Items)shortcut - Grupos de esquema de filas / columnas (
RowOutlineLevel,ColOutlineLevel), estado oculto (RowHidden,ColHidden) y estado de grupo contraído (RowCollapsed,ColCollapsed) - Paneles congelados mediante
Worksheet.FreezePanes(Row, Col) - Configuración de página — seis propiedades de margen, tamaño de
papel, orientación, escala de página, ajuste a ancho / ajuste a alto,
más
HeaderText/FooterText. Las constantes con nombrexlsxPaper*, comoxlsxPaperLetter,xlsxPaperA4,xlsxPaperA3yxlsxPaperLegal, pueden asignarse aPaperSize - Autofiltro (
Worksheet.SetAutoFilter) - Tablas de estilo Excel (TXLSXTable) con información de estilo y tableColumns
API de subcolecciones de fachada
Las clases de colección de la fachada gestionan formatos condicionales, validaciones de datos, rangos con nombre, imágenes y tablas. Estos son los miembros principales de cada colección:
- TXLSXConditionalFormats:
Expone las reglas de formato condicional
Propiedades:
CountMétodos:AddAboveAverage,AddColorScale2,AddColorScale3,AddDataBar,AddExisting,AddExpression,AddIconSet,AddSimpleRule,AddTextRule,AddTop10,DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXDataValidations:
Expone las validaciones de datos
Propiedades:
CountMétodos:AddExisting,AddList,DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXDefinedNames:
Expone los nombres definidos (rangos con nombre)
Propiedades:
CountMétodos:DeleteByName,FindByName,IndexOfName - TXLSXImages:
Expone las imágenes incrustadas
Propiedades:
CountMétodos:DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXTables:
Expone las tablas de Excel
Propiedades:
CountMétodos:AddExisting,DeleteByName,FindByName,IndexOfName - TXLSConnections:
Expone las conexiones de datos externas del libro de trabajo mediante
Workbook.ConnectionsPropiedades:CountMétodos:Add,AddExisting,FindById,FindByName,NextId,Validate - TXLSQueryTables:
Expone las definiciones de resultados de consulta de la hoja de cálculo mediante
Worksheet.QueryTablesPropiedades:CountMétodos:Add,AddExisting,FindByName,FindByResultTableName,Validate
Funciones compatibles
- Propiedades del documento (
Workbook.Title,Author,Subject,Keywords,Description,LastModifiedBy,Company, etc.) escritas endocProps/core.xml+docProps/app.xml - Protección con contraseña de hoja / libro (hash heredado de 16 bits)
mediante
Worksheet.Protect/Workbook.ProtectWorkbook; guardado protegido con contraseña AES compatible con Excel medianteSaveAsEncrypted, que usan aceleración AES-NI cuando está disponible y un respaldo de software portable en caso contrario.OpenEncryptedsigue lanzando una excepción para paquetes cifrados hasta que se implemente el soporte de descifrado - Conservación del proyecto VBA mediante
Workbook.LoadVbaProjectFromFile/VbaProject; los bytes se conservan sin cambios en el ciclo. Los payloads válidos devbaProject.bintambién pueden inspeccionarse medianteWorkbook.ParsedVBAProject - Gráficos — columna / barra / línea / circular / área / rosca
mediante
TXLSXChart,
anclados en una hoja de cálculo (
Worksheet.AddChart) o a página completa en una hoja de gráfico dedicada medianteWorkbook.AddChartSheet(Name, Type, Title) - Celdas de texto enriquecido mediante TXLSXRichText con formato de fuente por pasada; sobreviven al ciclo a través de la tabla de cadenas compartidas
- Anclas de hipervínculo internas mediante
Worksheet.AddHyperlinkToCell(Row, Col, "Sheet2!A1")(no se necesita una relación rels) - API de copiar / mover / limpiar rangos de celdas en la hoja de cálculo
(
CopyRange,CopyRangeTo,MoveRange,ClearRange) - Alineación de celdas mediante
TXLSXAlignment +
AlignmentIndex - Color de la pestaña de la hoja mediante
Worksheet.TabColor/TabColorIsAuto - Modo de vista de la hoja mediante
Worksheet.View, que incluye la vista normal, la vista previa de salto de página y la vista de diseño de página - Ruta de guardado en flujo (
Workbook.StreamingWrite := True) que construye y escribe cada hoja de cálculo sin mantener las demás en memoria; el acumulador XML por fila usaTXLSWideStringBuilderpara que el bucle de celdas se mantenga lineal - Round-trip
OpenOpen de ciclo completo para todo lo anterior excepto los paquetes XLSX cifrados y la identificación de hojas de gráfico, que recurren al comportamiento parcial documentado - Exportación e importación basadas en flujos:
SaveAs(Stream),Open(Stream)para uso en memoria o en campos BLOB - Lectura/escritura de hoja de cálculo OpenDocument:
Workbook.OpenODSy elWorkbook.Opengenérico pueden cargar paquetes.ods, mientras queWorkbook.SaveAsODSySaveAs(..., xlsxOpenDocumentSpreadsheet)escriben salida ODS directamente. La superficie de formato cubre valores, fórmulas, estilos, texto enriquecido, dimensiones de filas/columnas, combinaciones, hipervínculos, imágenes, gráficos, rangos con nombre, AutoFilter, formatos condicionales, validaciones de datos, paneles congelados, configuración de página, encabezados/pies de página, rangos de impresión, saltos de página, grupos de esquema, color de pestaña y visibilidad de hojas en los ciclos compatibles - Opciones de exportación ODS: pase
TODSExportOptionsaSaveAsODSpara anular la cadena del generador de documentos o suprimir las partes de gráficos e imágenes al producir un paquete más ligero - Importación de texto delimitado:
Workbook.OpenCSV(FileName)yWorkbook.OpenCSV(Stream)importan datos CSV o TSV con detección del separador, detección de codificación BOM, comillas de estilo RFC 4180 e inferencia de tipos de valor opcional.Open(FileName)enruta automáticamente los archivos.csvy.tsval importador - Escaneo de metadatos del libro:
Workbook.GetSheetNames(FileName, List)yWorkbook.GetSheetNames(Stream, List)leen los nombres de hojas en orden desdexl/workbook.xmlsin cargar el XML de hojas - Protección de celdas:
TXLSXCell.LockedyFormulaHidden— controlan qué celdas son editables o cuáles tienen sus fórmulas visibles cuando la hoja está protegida - Ajuste automático del ancho de columna y la altura de fila según el
contenido de la celda:
Worksheet.AutoFitColumn,AutoFitColumns,AutoFitRow,AutoFitRows - Inserción y eliminación de filas / columnas con cascada completa:
InsertRows,DeleteRows,InsertCols,DeleteCols. Los efectos secundarios se propagan a través de celdas, rangos combinados, hipervínculos, comentarios, panel congelado, referencias de cadena de rangos, tablas, fórmulas de celdas, fórmulas de formato condicional / validación de datos, destinos de hipervínculos internos, referencias de configuración de impresión, saltos de página manuales, criterios de columnas de autofiltro, rangos de series de gráficos, nombres definidos, anclas de imágenes y anclas de gráficos - Configuración de página ampliada:
PrintArea,PrintTitleRows,PrintTitleCols,PrintGridlines,PrintHeadings,BlackAndWhite,Draft,PrintNotes,PrintOverThenDown - Acceso opaco a la carga del driver de impresora mediante
PrinterDriverData,HasPrinterDriverDatayClearPrinterDriverData; los arrays de bytes y las copias de hojas de cálculo tienen propiedad independiente, las cargas están limitadas a 1 MiB, y limpiar elimina la relación de la hoja de cálculo y la parte binaria del paquete sin reemplazar los campos tipados de configuración de página; la carga vincula solo el identificador de relaciónpageSetupexacto con el tipo de relación requerido y un destino existente, mientras que las referencias ausentes, mal tipadas o colgantes emitenxlsDiagnosticPrinterSettingsRelationshipInvalidsin tomar prestada otra parte binaria - Calibración de renderizado a nivel de libro de trabajo mediante
RenderCalibration,CaptureRenderCalibrationyResetRenderCalibration, con asignación validada de registros completos e instantáneas independientes por operación para ancho, alto, interlineado, márgenes de celda, escalado de pantalla y DPI de medición - Medición de geometría y fuentes propiedad de la operación mediante
CreateRenderGeometry, con calibración inmutable e identidad de generación del libro, claves de caché completas conscientes de fuentes y ajuste de línea, caché local acotada y conversiones compartidas de píxel, punto, ancho de columna, MDW y ancho utilizable de celda - AutoFit captura una instantánea de geometría local del libro por operación y mide las fuentes de celdas visibles y el texto ajustado con espaciado y márgenes calibrados; la paginación captura una instantánea separada por construcción, mantiene las páginas lógicas existentes sin cambios hasta la siguiente construcción y nunca escribe dimensiones de la hoja de cálculo
- Visibilidad de hojas:
Worksheet.Visibility(xlsxSheetVisible/xlsxSheetHidden/xlsxSheetVeryHidden) eIsSelected - Saltos de página manuales:
AddRowBreak,AddColBreak, búsqueda por índice y asistentes de eliminación de rangos - Criterios de columnas de autofiltro:
Worksheet.AddAutoFilterColumncon reglas de filtro de un criterio o de dos criterios AND/OR, másWorksheet.AutoFilterColumns.FindByColIdyDeleteByColIdpara la búsqueda y eliminación directa de criterios (TXLSXAutoFilterColumn) - Base de fecha del libro:
Workbook.Date1904cambia entre la época de fechas de 1900 (predeterminada en Windows) y 1904 (Mac) - Bordes diagonales:
TXLSXBorder.DiagonalUpyDiagonalDownhabilitan las líneas diagonales; el bordeDiagonallleva el estilo y el color - Propiedades de fuente ampliadas:
TXLSXFont.VertAlign(superíndice / subíndice),OutlineFont,Shadow,Family,CharSet - Metadatos de rangos con nombre:
TXLSXDefinedName.HiddenyComment - Opciones de vista de hoja:
Worksheet.Zoom,DisplayGridLines,DisplayZeros,DisplayRightToLeft,StandardWidth,StandardHeight - Paleta de colores indexados heredada de OOXML:
Workbook.IndexedColor[0..63]conResetIndexedColors - Vínculos de libros externos:
Workbook.ExternalLinks/ TXLSXExternalLink — ciclo de metadatos Target URL + SheetNames - Conexiones de datos externas y resultados de consulta:
Workbook.Connections/Worksheet.QueryTables— actualización tipada, credenciales, comando, web, texto, parámetro, campo, tabla y enlaces de nombres definidos con round-trip seguro para extensiones - Compatibilidad con colores de tema en
TXLSXFont,TXLSXFillyTXLSXBorderEdge: propiedadesColorTheme/ColorIndex/TintAndShadecon orden de prioridad (tema > indexado > RGB) - Conversión a BIFF8 mediante las sobrecargas de archivo y flujo de
SaveXLSXWorkbookAsXLS, con un plan determinista de paleta de 56 colores, preservación de las ranuras indexadas ya usadas por los estilos del libro, cuantización OKLab ponderada cuando los colores directos exceden las ranuras disponibles, recorrido disperso de celdas cargadas y rechazo en preflight de filas o columnas fuera de la cuadrícula XLS; los campos de impresión tipados y los datos opacos de impresora se convierten de forma independiente, los límites BIFF8 se comprueban antes de escribir el flujo de destino, los campos estándar tienen prioridad sobre los valores predeterminados privados duplicados, y el indicadorUsePrinterDefaults, exclusivo de OOXML, no se sintetiza en el XLS clásico - Exportación CSV:
Workbook.SaveAsCSV— 4 sobrecargas (FileName o Stream × hoja activa / SheetIndex explícito + Delimiter), UTF-8 con BOM, comillas RFC 4180 - Exportación HTML:
Workbook.SaveAsHTMLyTXLSXRange.SaveAsHTMLescriben tablas HTML5 para toda una hoja del libro o solo para el rectángulo seleccionado. Las sobrecargas de opciones aceptanTXLSXHtmlExportOptionspara salida de documento completo, emisión de estilos, emisión de BOM y nombres de clases de tabla - Exportación RTF:
Workbook.SaveAsRTF— 4 sobrecargas, tabla RTF 1.6 con anchos de columna, formato de fuente por celda y unicode BMP completo mediante escapes\uN?de 16 bits con signo
Infraestructura compartida
Ambas fachadas comparten un conjunto común de unidades auxiliares de bajo nivel, lo que significa que los descriptores de estilo, las tablas hash, los árboles AVL, la E/S ZIP y XML, las conversiones RGB-HLS y los constructores de cadenas se escriben una vez y se usan en cualquiera de las rutas Los auxiliares compartidos incluyen:
lxStyleXf,lxStyleFont,lxStyleColor,lxStyleFill,lxStyleBorder— descriptores de estilo modernoslxRgb— conversión de color RGB / HLSlxHashTable,lxKeyList,lxAvlTree,lxCols,lxRows— contenedores de deduplicación y bloques de construcción del montón de celdas respaldado por AVLlxXmlReader,lxXmlWriter,lxZipArchive— capa de transporte OOXMLlxStrBuilder,lxCacheStream,lxWStream,lxZlibStream— auxiliares de ensamblaje de flujos y cadenas