Übersicht über die XLSX-Fassade (lxHandleX)
lxHandleX ist die dedizierte Fassadeneinheit für Arbeitsbuch-Workflows in Excel 2007+ (.xlsx) und OpenDocument Spreadsheet (.ods); Sie existiert parallel zur ursprünglichen Fassade lxHandle, sodass älterer Code ohne Änderungen weiter funktioniert
lxHandle— Primäre Fassade für das Excel 97-2003 BIFF-Format (.xls) sowie HTML-, RTF-, CSV- und TSV-Exporte; Der gesamte bestehende Benutzercode verwendet diese Einheit weiterhin unverändertlxHandleX— Primäre Fassade für das Excel 2007+ OOXML-Format (.xlsx), ODS-Lese-/Schreib-Workflows und die XLSB-Teilmenge aus Werten und Stilen; sie bietet eigene Arbeitsmappen- und Arbeitsblatttypen, automatische Paketerkennung überOpenundSourceFormat, explizite Ausgabeformate sowieTODSExportOptions
Klassenhierarchie
Die XLSX-Fassade stellt die folgenden Klassen bereit
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)
Diese Klassen sind unabhängig von lxHandle.TXLSWorkBook und
lxHandle.TXLSWorksheet; Anwendungen, die beide Formate benötigen, können beide Fassaden nebeneinander verwenden
uses
lxHandle, // XLS / HTML / RTF / CSV workbook (TXLSWorkBook)
lxHandleX; // XLSX workbook (TXLSXWorkbook)
Schnellstart
Die XLSX-Fassade folgt denselben Konventionen für Aufrufstrukturen wie die BIFF-Fassade — SaveAs / Open für das Arbeitsbuch,
Sheets.Add / Sheets[i] für die Arbeitsblattsammlung
und Cells.Item[Row, Col].Value für die Zellsammlung; Das folgende Beispiel schreibt ein kleines Arbeitsbuch, das jede derzeit unterstützte Funktion verwendet
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;
Unterstützte Funktionen
- Zellwerte: Zahlen, Booleans, Zeichenfolgen, Datumsangaben, Formeln
- Tabelle für gemeinsam genutzte Zeichenfolgen (
xl/sharedStrings.xml) mit Deduplizierung beim Schreibpfad - Stilpaletten auf Arbeitsbuchebene —
Workbook.Fonts,Fills,BordersundNumberFormats— plus pro ZelleFontIndex/FillIndex/BorderIndex/NumberFormatIndex; SaveAs gibt echte Blöcke<fonts>/<fills>/<borders>/<numFmts>+<cellXfs>aus; Open parst sie zurück, sodass Name/Größe/Fett/Kursiv/Farbe, Füllmuster, Rahmenkanten und benutzerdefinierte Zahlenformate den Round-Trip überstehen - Spaltenbreiten über
Worksheet.ColWidth[Col]und Zeilenhöhen überWorksheet.RowHeight[Row](Arbeitsblatt-Block<cols>und Attribute pro<row>ht) - Integriertes Datumsformat
cellXfbei IndexXlsxXfIndexDate;TDateTime-Werte werden automatisch markiert - Zusammengeführte Zellen (
<mergeCells>), einschließlichTXLSXRange.Merge(True)für Excel-typisches Zusammenführen über Zeilen - Arbeitsblattbereiche über
Worksheet.Range,RCRange,UsedRange,EntireRowundEntireColumn; Siehe TXLSXRange für Batch-Werte, Formeln,SetArrayFormula, Stilindizes, Zahlenformate, Rahmen, Schutz-Flags, automatische Anpassung, Zusammenführung, Offset, Größenänderung,SortMulti-Schlüssel-Sortierung,ApplyBuiltinStylefür integrierte Zellstile, Kopier-/Verschiebehilfen, Einfüge-/Löschhilfen für ganze Zeilen/Spalten und HTML-Export für ausgewählte Bereiche - Hyperlinks (
<hyperlinks>) unterstützt durch arbeitsblattspezifische rels für externe URLs - Zellkommentare mit VML-Zeichnung (
xl/commentsN.xml+xl/drawings/vmlDrawingN.vml), sodass Sprechblasen in Excel gerendert werden - Eingebettete Bilder (PNG / JPEG / GIF / BMP) über
Worksheet.Images, geschrieben inxl/media/imageN.<ext>plus arbeitsblattspezifische Zeichnungs-XML und rels - Eigenständige Zeichnungstextfelder über
Worksheet.AddTextBox, geschrieben als Arbeitsblatt-Zeichnungsformen mit Textkörpern anstelle von Zellkommentaren, mit direkter Anker-Suche und Bereichslöschhilfen - Definierte Bereiche auf Arbeitsbuchebene über
Workbook.DefinedNames(mit Gültigkeitsbereich für das Arbeitsbuch oder für das Arbeitsblatt überSheetIndex) - Formelberechnung über
Workbook.CalculateundWorksheet.Calculate, wobei der XLS-Formel-Parser und die XLS-Formel-Auswertung für Formeln mit führendem Gleichheitszeichen, Zell- und Bereichsreferenzen, referenzierte Formelzellen, blattübergreifende Referenzen, definierte Namensbereiche und unterstützte Text-, Datums-, Arbeitstag-, Ingenieur-/Basisumwandlungs-, bitweise, statistische, Aggregat- und mathematische Funktionen gemeinsam genutzt werden; Verwenden SieWorkbook.OnUserFunctionoderWorkbook.OnUserFunctionEx, um benutzerdefinierte oder nicht unterstützte Funktionen aufzulösen - Bedingte Formatierung pro Arbeitsblatt
(
Worksheet.ConditionalFormats) und Datenüberprüfung (Worksheet.DataValidations) einschließlich der AbkürzungAddListValidation(Range, Items)für Dropdown-Listen - Zeilen- / Spalten-Gliederungsgruppen (
RowOutlineLevel,ColOutlineLevel), ausgeblendeter Zustand (RowHidden,ColHidden) und reduzierter Gruppenzustand (RowCollapsed,ColCollapsed) - Fixierte Bereiche über
Worksheet.FreezePanes(Row, Col) - Seiteneinrichtung — sechs Randeigenschaften, Papiergröße, Ausrichtung,
Seitenskalierung, Anpassen an Breite / Anpassen an Höhe plus
HeaderText/FooterText; Die benannten KonstantenxlsxPaper*wiexlsxPaperLetter,xlsxPaperA4,xlsxPaperA3undxlsxPaperLegalkönnenPaperSizezugewiesen werden - Auto-Filter (
Worksheet.SetAutoFilter) - Tabellen im Excel-Stil (TXLSXTable) mit Stilinformationen und Spalten
Fassaden-Subsammlungs-APIs
Die Fassaden-Sammlungsklassen verwalten bedingte Formate, Datenüberprüfungen, definierte Namen, Bilder und Tabellen; Hier sind die wichtigsten Elemente jeder Sammlung
- TXLSXConditionalFormats:
Stellt bedingte Formatierungsregeln bereit;
Eigenschaften:
CountMethoden:AddAboveAverage,AddColorScale2,AddColorScale3,AddDataBar,AddExisting,AddExpression,AddIconSet,AddSimpleRule,AddTextRule,AddTop10,DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXDataValidations:
Stellt Datenüberprüfungen bereit;
Eigenschaften:
CountMethoden:AddExisting,AddList,DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXDefinedNames:
Stellt definierte Namen (benannte Bereiche) bereit;
Eigenschaften:
CountMethoden:DeleteByName,FindByName,IndexOfName - TXLSXImages:
Stellt eingebettete Bilder bereit;
Eigenschaften:
CountMethoden:DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXTables:
Stellt Excel-Tabellen bereit;
Eigenschaften:
CountMethoden:AddExisting,DeleteByName,FindByName,IndexOfName - TXLSConnections:
Stellt die externen Datenverbindungen der Arbeitsmappe über
Workbook.Connectionsbereit; Eigenschaften:CountMethoden:Add,AddExisting,FindById,FindByName,NextId,Validate - TXLSQueryTables:
Stellt die Abfrageergebnis-Definitionen des Arbeitsblatts über
Worksheet.QueryTablesbereit; Eigenschaften:CountMethoden:Add,AddExisting,FindByName,FindByResultTableName,Validate
Unterstützte Funktionen
- Dokumenteigenschaften (
Workbook.Title,Author,Subject,Keywords,Description,LastModifiedBy,Companyusw.), geschrieben indocProps/core.xml+docProps/app.xml - Passwortschutz für Arbeitsblätter / Arbeitsbücher (Legacy-16-Bit-Hash)
über
Worksheet.Protect/Workbook.ProtectWorkbook; Excel-kompatibles AES passwortgeschütztes Speichern überSaveAsEncryptedunter Verwendung von AES-NI-Beschleunigung, falls verfügbar, andernfalls tragbare Software-Fallback-Lösung;OpenEncryptedlöst weiterhin Ausnahmen für verschlüsselte Pakete aus, bis die Entschlüsselungsunterstützung implementiert ist - Erhalt von VBA-Projekten über
Workbook.LoadVbaProjectFromFile/VbaProject; Die Bytes werden unverändert hin- und herübertragen; GültigevbaProject.bin-Nutzdaten können auch überWorkbook.ParsedVBAProjectinspiziert werden - Diagramme — Säulen / Balken / Linien / Kreis / Flächen / Ring über
TXLSXChart, verankert
auf einem Arbeitsblatt (
Worksheet.AddChart) oder ganzseitig auf einem dedizierten Diagrammblatt überWorkbook.AddChartSheet(Name, Type, Title) - Rich-Text-Zellen über TXLSXRichText mit Schriftformatierung pro Abschnitt; Wird durch die Tabelle der gemeinsam genutzten Zeichenfolgen übertragen
- Interne Hyperlink-Anker über
Worksheet.AddHyperlinkToCell(Row, Col, "Sheet2!A1")(keine rels-Beziehung erforderlich) - Zellbereich-Kopier- / Verschiebe- / Lösch-API auf dem Arbeitsblatt
(
CopyRange,CopyRangeTo,MoveRange,ClearRange) - Zellausrichtung über
TXLSXAlignment +
zellspezifischen
AlignmentIndex - Farbe der Arbeitsblattregisterkarte über
Worksheet.TabColor/TabColorIsAuto - Arbeitsblatt-Ansichtsmodus über
Worksheet.View, einschließlich normaler Ansicht, Seitenumbruchvorschau und Seitenlayoutansicht - Streaming-SaveAs-Pfad (
Workbook.StreamingWrite := True) der jedes Arbeitsblatt erstellt und schreibt, ohne die anderen im Speicher zu halten; Der zeilenspezifische XML-Akkumulator verwendetTXLSWideStringBuilder, sodass die Zellschleife linear bleibt - Round-Trip
Openfür alles oben Genannte, ausgenommen verschlüsselte XLSX-Pakete und Diagrammblatt-Identifizierung, die auf das dokumentierte Teilverhalten zurückgreifen - Streambasierter Export und Import:
SaveAs(Stream),Open(Stream)für In-Memory- oder BLOB-Feld-Nutzung - Lesen/Schreiben von OpenDocument Spreadsheet:
Workbook.OpenODSund das generischeWorkbook.Openkönnen.ods-Pakete laden, währendWorkbook.SaveAsODSundSaveAs(..., xlsxOpenDocumentSpreadsheet)ODS-Ausgaben direkt schreiben; Der Funktionsumfang deckt Werte, Formeln, Stile, Rich-Text, Zeilen-/Spaltendimensionen, Zusammenführungen, Hyperlinks, Bilder, Diagramme, definierte Bereiche, Auto-Filter, bedingte Formate, Datenüberprüfungen, fixierte Bereiche, Seiteneinrichtung, Kopf-/Fußzeilen, Druckbereiche, Seitenumbrüche, Gliederungsgruppen, Registerkartenfarbe und Blattsichtbarkeit über alle unterstützten Round-Trips ab - ODS-Exportoptionen: Übergeben Sie
TODSExportOptionsanSaveAsODS, um den Dokumentgenerator-String zu überschreiben oder Diagramm- und Bildteile zu unterdrücken, um ein kleineres Paket zu erzeugen - Import von Text mit Trennzeichen:
Workbook.OpenCSV(FileName)undWorkbook.OpenCSV(Stream)importieren CSV- oder TSV-Daten mit Trennzeichenerkennung, Erkennung der BOM-Codierung, Anführungszeichen im Stil von RFC 4180 und optionaler Werttypinferenz;Open(FileName)leitet.csv- und.tsv-Dateien automatisch an den Importer weiter - Arbeitsmappen-Metadaten-Scan:
Workbook.GetSheetNames(FileName, List)undWorkbook.GetSheetNames(Stream, List)lesen geordnete Blattnamen ausxl/workbook.xml, ohne das Arbeitsblatt-XML zu laden - Zellschutz:
TXLSXCell.LockedundFormulaHidden— Steuern, welche Zellen bearbeitbar sind oder deren Formeln sichtbar sind, wenn das Blatt geschützt ist - Automatische Anpassung der Spaltenbreite und Zeilenhöhe aus dem Zellinhalt:
Worksheet.AutoFitColumn,AutoFitColumns,AutoFitRow,AutoFitRows - Einfügen und Löschen von Zeilen / Spalten mit vollständiger Kaskade:
InsertRows,DeleteRows,InsertCols,DeleteCols; Die Nebenwirkungen breiten sich über Zellen, zusammengeführte Bereiche, Hyperlinks, Kommentare, fixierte Bereiche, Bereichszeichenfolgen-Referenzen, Tabellen, Zellformeln, Formeln für bedingte Formatierung / Datenüberprüfung, interne Hyperlink-Ziele, Druckeinrichtungs-Referenzen, manuelle Seitenumbrüche, Auto-Filter-Spaltenkriterien, Diagrammreihenbereiche, definierte Namen, Bildanker und Diagrammanker aus - Erweiterte Seiteneinrichtung:
PrintArea,PrintTitleRows,PrintTitleCols,PrintGridlines,PrintHeadings,BlackAndWhite,Draft,PrintNotes,PrintOverThenDown - Opaker Zugriff auf die Nutzdaten des Druckertreibers über
PrinterDriverData,HasPrinterDriverDataundClearPrinterDriverData; Byte-Arrays und Arbeitsblattkopien haben unabhängige ownership, Nutzdaten sind auf 1 MiB begrenzt, und das Löschen entfernt die Arbeitsblatt-Beziehung und den binären Paketteil, ohne typisierte Seiteneinrichtungs-Felder zu ersetzen; das Laden bindet nur den exaktenpageSetup-Beziehungsidentifier mit dem erforderlichen Beziehungstyp und einem vorhandenen Ziel, während fehlende, falsch typisierte oder ins Leere laufende ReferenzenxlsDiagnosticPrinterSettingsRelationshipInvalidausgeben, ohne einen anderen Binärteil auszuleihen - Arbeitsmappenlokale Render-Kalibrierung über
RenderCalibration,CaptureRenderCalibrationundResetRenderCalibration, mit validierter Zuweisung des ganzen Datensatzes und unabhängigen Operation-Snapshots für Breite, Höhe, Zeilenabstand, Zellränder, Bildschirmskalierung und Mess-DPI - Operations-eigene Geometrie- und Schriftmessung über
CreateRenderGeometry, mit unveränderlicher Kalibrierung und Arbeitsmappen-Generierungsidentität, vollständigen schrift- und umbruchbewussten Cache-Schlüsseln, begrenztem lokalem Caching und gemeinsamen Umrechnungen für Pixel, Punkte, Spaltenbreite, MDW und nutzbare Zellbreite - AutoFit erfasst je Operation einen arbeitsmappenlokalen Geometrie-Snapshot und misst sichtbare Zellschriften und umgebrochenen Text mit kalibrierten Abständen und Rändern; die Paginierung erfasst einen separaten Snapshot pro Build, lässt bestehende logische Seiten bis zum nächsten Build unverändert und schreibt niemals Arbeitsblattabmessungen
- Blattsichtbarkeit:
Worksheet.Visibility(xlsxSheetVisible/xlsxSheetHidden/xlsxSheetVeryHidden) undIsSelected - Manuelle Seitenumbrüche:
AddRowBreak,AddColBreak, Indexsuche und Hilfsmittel zum Entfernen von Bereichen - Kriterien für die Auto-Filter-Spalte:
Worksheet.AddAutoFilterColumnmit einfachen oder UND/ODER Filterregeln mit zwei Kriterien, plusWorksheet.AutoFilterColumns.FindByColIdundDeleteByColIdfür die direkte Kriterien-Suche und -Entfernung (TXLSXAutoFilterColumn) - Arbeitsmappen-Datumsbasis:
Workbook.Date1904wechselt zwischen der Datums-Epoche 1900 (Windows-Standard) und 1904 (Mac) - Diagonale Rahmen:
TXLSXBorder.DiagonalUpundDiagonalDownaktivieren die diagonalen Linien; die KanteDiagonalträgt den Stil und die Farbe - Erweiterte Schrifteigenschaften:
TXLSXFont.VertAlign(hochgestellt / tiefgestellt),OutlineFont,Shadow,Family,CharSet - Metadaten für benannte Bereiche:
TXLSXDefinedName.HiddenundComment - Optionen für die Blattansicht:
Worksheet.Zoom,DisplayGridLines,DisplayZeros,DisplayRightToLeft,StandardWidth,StandardHeight - Legacy indizierte Farbpalette von OOXML:
Workbook.IndexedColor[0..63]mitResetIndexedColors - Externe Arbeitsbuch-Links:
Workbook.ExternalLinks/ TXLSXExternalLink — Metadaten-Round-Trip für Ziel-URL + SheetNames - Externe Datenverbindungen und Abfrageergebnisse:
Workbook.Connections/Worksheet.QueryTables— typisiertes Refresh, Anmeldedaten, Command, Web-, Text-, Parameter-, Feld-, Tabellen- und Defined-Name-Bindungen mit erweiterungssicherem Round-Trip - Themenfarben-Unterstützung für
TXLSXFont,TXLSXFillundTXLSXBorderEdge: EigenschaftenColorTheme/ColorIndex/TintAndShademit Prioritätsreihenfolge (Thema > indiziert > RGB) - BIFF8-Konvertierung über die Datei- und Stream-Überladungen von
SaveXLSXWorkbookAsXLS, mit einem deterministischen 56-Farb-Palette-Plan, Erhalt der von Arbeitsmappen-Styles bereits belegten indizierten Slots, gewichteter OKLab-Quantisierung, wenn direkte Farben die verfügbaren Slots übersteigen, sparse Traversierung geladener Zellen und Preflight-Ablehnung von Zeilen oder Spalten außerhalb des XLS-Rasters; typisierte Druckfelder und opake Druckerdaten werden unabhängig voneinander konvertiert, BIFF8-Grenzen werden geprüft, bevor der Zielstrom geschrieben wird, Standardfelder haben Vorrang vor duplizierten privaten Defaults, und das nur in OOXML existierendeUsePrinterDefaults-Flag wird nicht in Classic XLS hineinsynthetisiert - CSV-Export:
Workbook.SaveAsCSV— 4 Überladungen (FileName oder Stream × aktives Blatt / expliziter SheetIndex + Trennzeichen), UTF-8 mit BOM, RFC 4180-Anführungszeichen - HTML-Export:
Workbook.SaveAsHTMLundTXLSXRange.SaveAsHTMLschreiben HTML5-Tabellen für ein gesamtes Arbeitsmappenblatt oder nur für das ausgewählte Rechteck; Optionen-Überladungen akzeptierenTXLSXHtmlExportOptionsfür die vollständige Dokumentenausgabe, Stilausgabe, BOM-Ausgabe und Tabellenklassenbenennung - RTF-Export:
Workbook.SaveAsRTF— 4 Überladungen, RTF 1.6-Tabelle mit Spaltenbreiten, zellspezifischer Schriftformatierung und vollständigem BMP-Unicode über vorzeichenbehaftete 16-Bit-Escapes des Typs\uN?
Gemeinsam genutzte Infrastruktur
Beide Fassaden teilen sich eine Reihe von untergeordneten Hilfseinheiten; Das bedeutet, dass Stil-Deskriptoren, Hash-Tabellen, AVL-Bäume, ZIP- und XML-E/A, RGB-zu-HLS-Konvertierungen und String-Builder einmal geschrieben und von beiden Pfaden verwendet werden; Zu den gemeinsam genutzten Hilfsmitteln gehören
lxStyleXf,lxStyleFont,lxStyleColor,lxStyleFill,lxStyleBorder— Moderne Stil-DeskriptorenlxRgb— RGB / HLS-FarbumwandlunglxHashTable,lxKeyList,lxAvlTree,lxCols,lxRows— Deduplizierende Container und AVL-gestützte Bausteine für den Zell-HeaplxXmlReader,lxXmlWriter,lxZipArchive— OOXML-TransportschichtlxStrBuilder,lxCacheStream,lxWStream,lxZlibStream— Hilfsmittel für Stream- und String-Zusammenstellung