Información general de XLSX Facade (lxHandleX)
lxHandleX es la unidad de fachada dedicada para flujos de trabajo de libros de Excel 2007+ (.xlsx) y OpenDocument Spreadsheet (.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 a 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 flujos de trabajo de lectura/escritura de ODS; proporciona sus propios tipos de libros y hojas de trabajo para que el comportamiento específico de XLSX no se adapte de forma retroactiva a la ruta de código de BIFF, y expone la importación y exportación de ODS, así como la detección automática de ODS a través deOpen,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
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 chart (column / bar / line / pie / scatter / bubble / radar)
TXLSXChartSeries = class // chart series with category, value, and bubble-size ranges
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)
Estas clases son independientes de lxHandle.TXLSWorkBook y lxHandle.TXLSWorksheet. Las aplicaciones que necesiten ambos formatos pueden usar ambas fachadas de forma paralela:
uses
lxHandle, // XLS / HTML / RTF / CSV workbook (TXLSWorkBook)
lxHandleX; // XLSX workbook (TXLSXWorkbook)
Inicio rápido
La fachada XLSX sigue las mismas convenciones de formato de llamada que la fachada BIFF: SaveAs / Open en el libro de trabajo, Sheets.Add / Sheets[i] en la colección de hojas de trabajo y Cells.Item[Row, Col].Value en la colección de celdas. El siguiente ejemplo escribe un pequeño libro que pone a prueba cada característica actualmente compatible:
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;
Características admitidas
- Valores de celdas: 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 de trabajo —
Workbook.Fonts,Fills,BordersyNumberFormats— además deFontIndex/FillIndex/BorderIndex/NumberFormatIndexpor celda. SaveAs emite bloques reales de<fonts>/<fills>/<borders>/<numFmts>+<cellXfs>; Open los vuelve a analizar para que el Name/Size/Bold/Italic/Color, los patrones de relleno, los bordes y los formatos de número personalizados sobrevivan al proceso de ida y vuelta - Anchos de columna individuales a través de
Worksheet.ColWidth[Col]y alturas de fila individuales a través deWorksheet.RowHeight[Row](bloque<cols>de la hoja de cálculo y atributoshtpor cada<row>) cellXfde fecha integrado en el índiceXlsxXfIndexDate; los valores deTDateTimese etiquetan automáticamente- Celdas combinadas (
<mergeCells>), incluyendoTXLSXRange.Merge(True)para combinaciones al estilo de Excel a través de filas - Rangos de hojas de trabajo a través de
Worksheet.Range,RCRange,UsedRange,EntireRowyEntireColumn. Consulte TXLSXRange para obtener valores en lote, fórmulas,SetArrayFormula, índices de estilo, formatos de número, bordes, banderas de protección, ajuste automático, combinación, desplazamiento, cambio de tamaño, ordenación de múltiples clavesSort, estilos de celda integradosApplyBuiltinStyle, asistentes para copiar/mover, asistentes para insertar/eliminar filas completas/columnas completas y exportación a HTML de rangos seleccionados - Hipervínculos (
<hyperlinks>) respaldados por relaciones (rels) por hoja de trabajo para URL externas - Comentarios de celda con dibujo VML (
xl/commentsN.xml+xl/drawings/vmlDrawingN.vml) para que los globos se representen en Excel - Imágenes incrustadas (PNG / JPEG / GIF / BMP) a través de
Worksheet.Images, escritas enxl/media/imageN.<ext>más el XML de dibujo y las relaciones (rels) por hoja - Cuadros de texto de dibujo independientes a través de
Worksheet.AddTextBox, escritos como formas de dibujo de hoja de trabajo con cuerpos de texto en lugar de comentarios de celda, con helpers de búsqueda directa de anclajes y eliminación de rangos - Rangos con nombre a nivel de libro a través de
Workbook.DefinedNames(con alcance de libro de trabajo o con alcance de hoja a través deSheetIndex) - Cálculo de fórmulas a través de
Workbook.CalculateyWorksheet.Calculate, compartiendo el analizador y evaluador de fórmulas de XLS para fórmulas con signo igual inicial, referencias de celda y rango, celdas de fórmula referenciadas, referencias cruzadas de hojas, rangos de nombres definidos y funciones admitidas de texto, fecha, día laboral, ingeniería/conversión de base, bit a bit, estadísticas, agregadas y matemáticas; useWorkbook.OnUserFunctionoWorkbook.OnUserFunctionExpara resolver funciones personalizadas o no admitidas - Formato condicional por hoja de cálculo (
Worksheet.ConditionalFormats) y validación de datos (Worksheet.DataValidations), incluido el atajo para lista desplegableAddListValidation(Range, Items) - Grupos de esquema de fila/columna (
RowOutlineLevel,ColOutlineLevel), estado oculto (RowHidden,ColHidden) y estado de grupo contraído (RowCollapsed,ColCollapsed) - Paneles congelados a través de
Worksheet.FreezePanes(Row, Col) - Configuración de página — seis propiedades de margen, tamaño de papel, orientación, escala de página, ajustar a lo ancho / ajustar a lo alto, además de
HeaderText/FooterText. Las constantes con nombrexlsxPaper*comoxlsxPaperLetter,xlsxPaperA4,xlsxPaperA3yxlsxPaperLegalse pueden asignar aPaperSize - Autofiltro (
Worksheet.SetAutoFilter) - Tablas al estilo de Excel (TXLSXTable) con información de estilo, columnas de tabla, etiquetas y funciones de la fila de totales, fórmulas de columnas calculadas y fórmulas de la fila de totales
API de subcolección de fachada
Las clases de colección de fachada administran formatos condicionales, validaciones de datos, rangos con nombre, imágenes y tablas. Aquí están los miembros principales de cada colección:
- TXLSXConditionalFormats: expone las reglas de formato condicional; propiedades:
Count; métodos:AddAboveAverage,AddColorScale2,AddColorScale3,AddDataBar,AddExisting,AddExpression,AddIconSet,AddSimpleRule,AddTextRule,AddTop10,DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXDataValidations: expone las validaciones de datos; propiedades:
Count; métodos:AddExisting,AddList,DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXDefinedNames: expone los nombres definidos (rangos con nombre); propiedades:
Count; métodos:DeleteByName,FindByName,IndexOfName - TXLSXImages: expone las imágenes incrustadas; propiedades:
Count; métodos:DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXTables: Expone tablas de Excel. Propiedades:
CountMétodos:AddExisting,DeleteByName,FindByName,IndexOfName - TXLSConnections:
Expone las conexiones de datos externas del libro de trabajo a través de
Workbook.ConnectionsPropiedades:CountMétodos:Add,AddExisting,FindById,FindByName,NextId,Validate - TXLSQueryTables:
Expone las definiciones de resultados de consulta de la hoja de cálculo a través de
Worksheet.QueryTablesPropiedades:CountMétodos:Add,AddExisting,FindByName,FindByResultTableName,Validate
Características admitidas
- 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 de trabajo / libro de trabajo (hash heredado de 16 bits) a través de
Worksheet.Protect/Workbook.ProtectWorkbook; guardado protegido con contraseña AES compatible con Excel a través deSaveAsEncrypted, utilizando aceleración AES-NI cuando esté disponible y una alternativa de software portable en caso contrario.OpenEncryptedsigue generando una excepción para paquetes cifrados hasta que se implemente el soporte de descifrado - Preservación del proyecto VBA a través de
Workbook.LoadVbaProjectFromFile/VbaProject; los bytes realizan un ciclo completo sin cambios. Las cargas útiles válidas devbaProject.bintambién se pueden inspeccionar a través deWorkbook.ParsedVBAProject - Gráficos — de columnas / barras / líneas / circulares / área / anillos / dispersión / burbujas / radar / cotizaciones / superficie / 3D y gráficos combinados mediante TXLSXChart, anclados en una hoja de trabajo (
Worksheet.AddChart) o de página completa en una hoja de gráfico dedicada a través deWorkbook.AddChartSheet(Name, Type, Title) - Celdas de texto enriquecido a través de TXLSXRichText con formato de fuente por ejecución; realiza el ciclo de ida y vuelta a través de la tabla de cadenas compartidas
- Anclajes de hipervínculos internos a través de
Worksheet.AddHyperlinkToCell(Row, Col, "Sheet2!A1")(no se necesita una relación de relaciones (rels)) - API de copia, movimiento y limpieza de rangos de celdas en la hoja de trabajo (
CopyRange,CopyRangeTo,MoveRange,ClearRange) - Alineación de celdas mediante TXLSXAlignment y
AlignmentIndexpor celda - Color de pestaña de hoja de trabajo a través de
Worksheet.TabColor/TabColorIsAuto - Modo de vista de hoja de trabajo a través de
Worksheet.View, que incluye vista normal, vista previa de salto de página y vista de diseño de página - Ruta de guardado por streaming (
Workbook.StreamingWrite := True) que compila y escribe cada hoja de trabajo sin mantener las otras en memoria; el acumulador XML por fila utilizaTXLSWideStringBuilderpara que el bucle de celdas sigue siendo lineal - Ciclo completo de
Openpara todo lo anterior excepto los paquetes XLSX cifrados y la identificación de hojas de gráficos, que recurren al comportamiento parcial documentado - Exportación e importación basadas en flujo:
SaveAs(Stream),Open(Stream)para uso en memoria o campos BLOB - Lectura/escritura de hojas de cálculo de OpenDocument:
Workbook.OpenODSy el método genéricoWorkbook.Openpueden cargar paquetes.ods, mientras queWorkbook.SaveAsODSySaveAs(..., xlsxOpenDocumentSpreadsheet)escriben la salida ODS directamente. La cobertura del formato incluye valores, fórmulas, estilos, texto enriquecido, dimensiones de filas/columnas, combinaciones, hipervínculos, imágenes, gráficos, rangos con nombre, AutoFiltro, formatos condicionales, validaciones de datos, paneles inmovilizados, configuración de página, encabezados y pies de página, rangos de impresión, saltos de página, grupos de esquema, color de pestaña y visibilidad de las hojas en los ciclos de ida y vuelta compatibles - Opciones de exportación de ODS: pase
TODSExportOptionsaSaveAsODSpara anular la cadena del generador de documentos o suprimir 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 automática de separadores, detección de codificación BOM, comillas al estilo de RFC 4180 e inferencia opcional del tipo de valor;Open(FileName)dirige automáticamente los archivos.csvy.tsval importador - Escaneo de metadatos del libro de trabajo:
Workbook.GetSheetNames(FileName, List)yWorkbook.GetSheetNames(Stream, List)leen los nombres de hoja ordenados desdexl/workbook.xmlsin cargar el XML de la hoja de trabajo - Protección de celdas:
TXLSXCell.LockedyFormulaHidden— controlan qué celdas son editables o cuáles de sus fórmulas son visibles cuando la hoja está protegida - Ajuste automático del ancho de columna y alto de fila a partir del 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, inmovilización de paneles, referencias de cadenas de rango, 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 columna de autofiltro, rangos de series de gráficos, nombres definidos, anclajes de imagen y anclajes de gráficos - Configuración de página extendida:
PrintArea,PrintTitleRows,PrintTitleCols,PrintGridlines,PrintHeadings,BlackAndWhite,Draft,PrintNotes,PrintOverThenDown - Acceso opaco a la carga útil del driver de impresora a través de
PrinterDriverData,HasPrinterDriverDatayClearPrinterDriverData; los arreglos de bytes y las copias de hojas de cálculo tienen propiedad independiente, las cargas útiles se limitan a 1 MiB, y la limpieza elimina la relación de la hoja de cálculo y la parte binaria del paquete sin reemplazar los campos con tipos 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 faltantes, con tipo erróneo o colgantes emitenxlsDiagnosticPrinterSettingsRelationshipInvalidsin tomar prestada otra parte binaria - Calibración de renderizado local del libro de trabajo a través de
RenderCalibration,CaptureRenderCalibrationyResetRenderCalibration, con asignación validada de registros completos e instantáneas de operación independientes para ancho, alto, interletrado de línea, márgenes de celda, escalado de pantalla y DPI de medición - Geometría y medición de fuentes propiedad de la operación a través de
CreateRenderGeometry, con calibración inmutable e identidad de generación del libro de trabajo, claves de caché completas para fuentes y ajuste de línea, almacenamiento en caché local acotado, y conversiones compartidas de píxel, punto, ancho de columna, MDW y ancho útil de celda - AutoFit captura una instantánea de geometría local del libro de trabajo 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 compilación, mantiene las páginas lógicas existentes sin cambios hasta la siguiente compilación, y nunca escribe dimensiones de la hoja de cálculo
- Visibilidad de hoja:
Worksheet.Visibility(xlsxSheetVisible/xlsxSheetHidden/xlsxSheetVeryHidden) eIsSelected - Saltos de página manuales:
AddRowBreak,AddColBreak, búsqueda de índice y asistentes de eliminación de rangos - Criterios de columna de autofiltro:
Worksheet.AddAutoFilterColumncon reglas de filtro de criterio único o de dos criterios Y/O, además deWorksheet.AutoFilterColumns.FindByColIdyDeleteByColIdpara la búsqueda directa y eliminación de criterios (TXLSXAutoFilterColumn) - Base de fecha del libro:
Workbook.Date1904cambia entre la época de fecha de 1900 (por defecto en Windows) y de 1904 (Mac) - Bordes diagonales:
TXLSXBorder.DiagonalUpyDiagonalDownhabilitan las líneas diagonales; el bordeDiagonallleva el estilo y el color - Propiedades de fuente extendidas:
TXLSXFont.VertAlign(superíndice / subíndice),OutlineFont,Shadow,Family,CharSet - Metadatos de rango 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 - Enlaces a libros de trabajo externos:
Workbook.ExternalLinks/ TXLSXExternalLink — Viaje de ida y vuelta de URL de destino + metadatos de SheetNames - Conexiones de datos externas y resultados de consulta:
Workbook.Connections/Worksheet.QueryTables— actualización con tipos, credenciales, comando, web, texto, parámetro, campo, tabla y enlaces de nombres definidos con round-trip seguro para extensiones - Soporte de color de tema en
TXLSXFont,TXLSXFillyTXLSXBorderEdge: propiedadesColorTheme/ColorIndex/TintAndShadecon orden de prioridad (tema > indexado > RGB) - Conversión BIFF8 a través de las sobrecargas de archivo y de 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 de trabajo, 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 con tipos y los datos de impresora opacos 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 privados predeterminados duplicados, y el flagUsePrinterDefaultsexclusivo de OOXML no se sintetiza en XLS Classic - Exportación a CSV:
Workbook.SaveAsCSV— 4 sobrecargas (FileName o Stream × hoja activa / SheetIndex explícito + Delimiter), UTF-8 con BOM, comillas RFC 4180 - Exportación a HTML:
Workbook.SaveAsHTMLyTXLSXRange.SaveAsHTMLescriben tablas HTML5 para una hoja de libro de trabajo completa o solo para el rectángulo seleccionado; las sobrecargas de opciones aceptanTXLSXHtmlExportOptionspara la salida del documento completo, la emisión de estilos, la emisión de BOM y la nomenclatura de clases de tabla - Exportación a RTF:
Workbook.SaveAsRTF— 4 sobrecargas, tabla RTF 1.6 con anchos de columna, formato de fuente por celda y Unicode de BMP completo mediante escapes\uN?de 16 bits con signo
Infraestructura compartida
Ambas fachadas comparten un conjunto común de unidades auxiliares de nivel inferior, lo que significa que los descriptores de estilo, las tablas hash, los árboles AVL, la E/S de ZIP y XML, las conversiones de RGB a HLS y los constructores de cadenas se escriben una vez y son utilizados por cualquiera de las rutas; los asistentes compartidos incluyen:
lxStyleXf,lxStyleFont,lxStyleColor,lxStyleFill,lxStyleBorder— descriptores de estilo modernoslxRgb— conversión de colores RGB / HLSlxHashTable,lxKeyList,lxAvlTree,lxCols,lxRows— contenedores de deduplicación y bloques de construcción de montículos de celdas basados en AVLlxXmlReader,lxXmlWriter,lxZipArchive— capa de transporte OOXMLlxStrBuilder,lxCacheStream,lxWStream,lxZlibStream— asistentes de ensamblado de flujos y cadenas