XLSX Facade Overview (lxHandleX)
lxHandleX is de dedicated facade-unit voor Excel 2007+ (.xlsx) en OpenDocument Spreadsheet (.ods)-werkmapworkflows. Hij bestaat naast de oorspronkelijke lxHandle-facade zodat bestaande code zonder wijzigingen blijft werken:
lxHandle— primaire facade voor het Excel 97-2003 BIFF-formaat (.xls), HTML-, RTF-, CSV- en TSV-exports. Alle bestaande gebruikerscode blijft deze unit ongewijzigd gebruikenlxHandleX— primaire facade voor het Excel 2007+ OOXML-formaat (.xlsx) en ODS read/write-workflows. Biedt eigen werkmap- en werkbladtypes zodat XLSX-specifiek gedrag niet op het BIFF-codepad wordt geïmplanteerd, en stelt ODS-import, -export en automatische ODS-detectie viaOpen,SourceFormatenTODSExportOptionsbloot
Klassenhiërarchie
De XLSX-facade stelt de volgende klassen bloot:
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
Deze klassen zijn onafhankelijk van lxHandle.TXLSWorkBook en
lxHandle.TXLSWorksheet. Toepassingen die beide formaten nodig hebben,
kunnen beide facades naast elkaar gebruiken:
uses
lxHandle, // XLS / HTML / RTF / CSV workbook (TXLSWorkBook)
lxHandleX; // XLSX workbook (TXLSXWorkbook)
Quick start
De XLSX-facade volgt dezelfde call-shape-conventies als de BIFF
facade — SaveAs / Open op de werkmap,
Sheets.Add / Sheets[i] op de werkbladverzameling,
en Cells.Item[Row, Col].Value op de
celverzameling. Het voorbeeld hieronder schrijft een kleine werkmap die elke
momenteel ondersteunde functie belicht:
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;
Ondersteunde functies
- Celwaarden: getallen, booleans, tekenreeksen, datums, formules
- Gedeelde-strings-tabel (
xl/sharedStrings.xml) met deduplicatie op het schrijfpad - Werkmapbrede stijlpalletten —
Workbook.Fonts,Fills,BordersenNumberFormats— plus per celFontIndex/FillIndex/BorderIndex/NumberFormatIndex. SaveAs emitteert echte<fonts>/<fills>/<borders>/<numFmts>+<cellXfs>-blokken; Open parseert ze terug zodat Name/Size/Bold/Italic/Color, vullpatronen, rantranden en aangepaste getalnotaties de round-trip allemaal overleven - Kolombreedtes via
Worksheet.ColWidth[Col]en rijhoogten viaWorksheet.RowHeight[Row](werkblad-<cols>-blok en per-<row>ht-attributen) - Ingebouwde datum-
cellXfop indexXlsxXfIndexDate;TDateTime-waarden worden automatisch gelabeld - Samengevoegde cellen (
<mergeCells>), inclusiefTXLSXRange.Merge(True)voor samenvoegen over rijen in Excel-stijl - Werkbladbereiken via
Worksheet.Range,RCRange,UsedRange,EntireRowenEntireColumn. Zie TXLSXRange voor batchwaarden, formules,SetArrayFormula, stijlindexen, getalnotaties, randen, beveiligingsvlaggen, auto-fit, samenvoegen, offset, formaatwijziging,Sortmet meerdere sleutels,ApplyBuiltinStylevoor ingebouwde celstijlen, kopieer-/verplaats-hulpfuncties, hulpfuncties voor invoegen/verwijderen van hele rijen/kolommen en HTML-export van het geselecteerde bereik - Hyperlinks (
<hyperlinks>) ondersteund door per-werkblad rels voor externe URL's - Celopmerkingen met VML-drawing (
xl/commentsN.xml+xl/drawings/vmlDrawingN.vml) zodat ballonnen in Excel renderen - Ingesloten afbeeldingen (PNG / JPEG / GIF / BMP) via
Worksheet.Images, weggeschreven naarxl/media/imageN.<ext>plus tekening-XML en rels per blad - Zelfstandige tekeningtekstvakken via
Worksheet.AddTextBox, weggeschreven als werkblad-drawing-shapes met tekstlichamen in plaats van celopmerkingen, met directe ankeropzoeking en hulpfuncties voor bereikverwijdering - Benoemde bereiken op werkmapniveau via
Workbook.DefinedNames(werkmap-scope of blad-scope viaSheetIndex) - Formuleberekening via
Workbook.CalculateenWorksheet.Calculate, met gedeelde XLS-formuleparser en -evaluator voor formules met voorafgaand =, cel- en bereikverwijzingen, gerefereerde formulecellen, verwijzingen tussen bladen, bereiken met gedefinieerde namen en ondersteunde tekst-, datum-, werkdag-, engineering/basisconversie-, bitwise-, statistische, aggregatie- en wiskundefuncties; gebruikWorkbook.OnUserFunctionofWorkbook.OnUserFunctionExom aangepaste of niet-ondersteunde functies op te lossen - Voorwaardelijke opmaak per werkblad
(
Worksheet.ConditionalFormats) en gegevensvalidatie (Worksheet.DataValidations), inclusief de dropdown-snelkoppelingAddListValidation(Range, Items) - Rij-/kolomoutlinegroepen (
RowOutlineLevel,ColOutlineLevel), verborgen status (RowHidden,ColHidden) en samengevouwen groepstatus (RowCollapsed,ColCollapsed) - Bevroren vensters via
Worksheet.FreezePanes(Row, Col) - Page setup — zes marge-eigenschappen, papierformaat, oriëntatie,
paginaschaal, fit-to-width / fit-to-height, plus
HeaderText/FooterText. BenoemdexlsxPaper*-constanten zoalsxlsxPaperLetter,xlsxPaperA4,xlsxPaperA3enxlsxPaperLegalzijn toewijsbaar aanPaperSize - AutoFilter (
Worksheet.SetAutoFilter) - Excel-style tables (TXLSXTable) met stijlinfo, tabelkolommen, totaalrij-labels en -functies, formules voor berekende kolommen en formules voor de totaalrij
Facade-subcollectie-API's
De facade-collectieklassen beheren voorwaardelijke opmaak, datavalidaties, benoemde bereiken, afbeeldingen en tabellen. Dit zijn de kernleden van elke collectie:
- TXLSXConditionalFormats:
Stelt regels voor voorwaardelijke opmaak bloot
Properties:
CountMethods:AddAboveAverage,AddColorScale2,AddColorScale3,AddDataBar,AddExisting,AddExpression,AddIconSet,AddSimpleRule,AddTextRule,AddTop10,DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXDataValidations:
Stelt gegevensvalidaties bloot
Properties:
CountMethods:AddExisting,AddList,DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXDefinedNames:
Stelt gedefinieerde namen (benoemde bereiken) bloot
Properties:
CountMethods:DeleteByName,FindByName,IndexOfName - TXLSXImages:
Stelt ingesloten afbeeldingen bloot
Properties:
CountMethods:DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXTables:
Stelt Excel-tabellen bloot
Properties:
CountMethods:AddExisting,DeleteByName,FindByName,IndexOfName - TXLSConnections:
Stelt de externe gegevensverbindingen van de werkmap beschikbaar via
Workbook.ConnectionsProperties:CountMethods:Add,AddExisting,FindById,FindByName,NextId,Validate - TXLSQueryTables:
Stelt de queryresultaatdefinities van het werkblad beschikbaar via
Worksheet.QueryTablesProperties:CountMethods:Add,AddExisting,FindByName,FindByResultTableName,Validate
Ondersteunde functies
- Document properties (
Workbook.Title,Author,Subject,Keywords,Description,LastModifiedBy,Company, enz.) weggeschreven naardocProps/core.xml+docProps/app.xml - Werkblad-/werkmapwachtwoordbeveiliging (legacy 16-bits hash)
via
Worksheet.Protect/Workbook.ProtectWorkbook; Excel-compatibel met AES wachtwoordbeveiligd opslaan viaSaveAsEncrypted, met AES-NI-versnelling wanneer beschikbaar en anders een portable software-fallback.OpenEncryptedgeeft bij versleutelde pakketten nog steeds een fout totdat decryptie-ondersteuning landt - VBA-projectbehoud via
Workbook.LoadVbaProjectFromFile/VbaProject; bytes round-trippen ongewijzigd. GeldigevbaProject.bin-payloads zijn ook te inspecteren viaWorkbook.ParsedVBAProject - Grafieken — kolom / balk / lijn / taart / vlak / donut via
TXLSXChart, verankerd
op een werkblad (
Worksheet.AddChart) of full-page op een dedicated chart sheet viaWorkbook.AddChartSheet(Name, Type, Title) - Rich-text-cellen via TXLSXRichText met per-run lettertype-opmaak; round-tript via de gedeelde-stringtabel
- Interne hyperlinkankers via
Worksheet.AddHyperlinkToCell(Row, Col, "Sheet2!A1")(geen rels-relatie nodig) - Celbereik-copy/move/clear-API op het werkblad
(
CopyRange,CopyRangeTo,MoveRange,ClearRange) - Celuitlijning via
TXLSXAlignment +
AlignmentIndexper cel - Werkbladtabkleur via
Worksheet.TabColor/TabColorIsAuto - Werkbladweergavemodus via
Worksheet.View, inclusief normale weergave, pagina-eindevoorbeeld en pagina-indelingsweergave - Streaming-SaveAs-pad (
Workbook.StreamingWrite := True) dat elk werkblad bouwt en wegschrijft zonder de andere in het geheugen te houden; de XML-accumulator per rij gebruiktTXLSWideStringBuilderzodat de celloop lineair blijft - Round-trip-
Openvoor alles hierboven behalve versleutelde XLSX-pakketten en chart-sheet-bladidentificatie, die terugvallen op het gedocumenteerde partieze gedrag - Stream-gebaseerde export en import:
SaveAs(Stream),Open(Stream)voor gebruik in het geheugen of vanuit BLOB-velden - OpenDocument Spreadsheet lezen/schrijven:
Workbook.OpenODSen de generiekeWorkbook.Openkunnen.ods-pakketten laden, terwijlWorkbook.SaveAsODSenSaveAs(..., xlsxOpenDocumentSpreadsheet)rechtstreeks ODS-uitvoer schrijven. Het formaatoppervlak dekt waarden, formules, stijlen, rich text, rij-/kolomafmetingen, samenvoegingen, hyperlinks, afbeeldingen, grafieken, benoemde bereiken, AutoFilter, voorwaardelijke opmaak, gegevensvalidaties, bevroren vensters, pagina-instelling, kop-/voetteksten, afdrukbereiken, pagina-einden, outlinengroepen, tabkleur en bladzichtbaarheid over ondersteunde roundtrips heen - ODS-exportopties: geef
TODSExportOptionsdoor aanSaveAsODSom de documentgenerator-tekst te overschrijven of grafiek- en afbeeldingsonderdelen te onderdrukken voor een lichter pakket - Import van tekst met scheidingstekens:
Workbook.OpenCSV(FileName)enWorkbook.OpenCSV(Stream)importeren CSV- of TSV-gegevens met scheidingstekensnuffelen, BOM-coderingsdetectie, quoting in RFC 4180-stijl en optionele waarde-type-inferentie.Open(FileName)routeert.csv- en.tsv-bestanden automatisch naar de importeur - Werkmapmetadatascan:
Workbook.GetSheetNames(FileName, List)enWorkbook.GetSheetNames(Stream, List)lezen geordende bladnamen uitxl/workbook.xmlzonder werkblad-XML te laden - Celbeveiliging:
TXLSXCell.LockedenFormulaHidden— stuurt welke cellen bewerkbaar zijn en welke formules zichtbaar zijn wanneer het blad is beveiligd - Kolombreedte en rijhoogte automatisch op celinhoud fitren:
Worksheet.AutoFitColumn,AutoFitColumns,AutoFitRow,AutoFitRows - Rij-/kolominsertie en -verwijdering met volledige cascade:
InsertRows,DeleteRows,InsertCols,DeleteCols. Neveneffecten planten zich voort door cellen, samengevoegde bereiken, hyperlinks, opmerkingen, bevroren vensters, bereiktekenreeksverwijzingen, tabellen, celformules, voorwaardelijke-opmaak-/datavalidatieformules, interne hyperlink- doelen, afdrukinstellingen, handmatige pagina-einden, autofilter-kolomcriteria, diagramreeksbereiken, gedefinieerde namen, afbeeldingsankers en diagram- ankers - Uitgebreide pagina-instelling:
PrintArea,PrintTitleRows,PrintTitleCols,PrintGridlines,PrintHeadings,BlackAndWhite,Draft,PrintNotes,PrintOverThenDown - Toegang tot de ondoorzichtige payload van printerstuurprogramma’s via
PrinterDriverData,HasPrinterDriverDataenClearPrinterDriverData; byte-arrays en werkbladkopieën zijn onafhankelijk eigendom, payloads zijn beperkt tot 1 MiB, en wissen verwijdert de werkbladrelatie en het binaire package-part zonder getypeerde page-setup-velden te vervangen; bij het laden wordt alleen de exactepageSetup-relatie-id gekoppeld met het vereiste relatietype en een bestaande target, terwijl ontbrekende, verkeerd getypeerde of losse verwijzingenxlsDiagnosticPrinterSettingsRelationshipInvalidmelden zonder een ander binair part te lenen - Renderkalibratie per werkmap via
RenderCalibration,CaptureRenderCalibrationenResetRenderCalibration, met gevalideerde toewijzing van het hele record en onafhankelijke operatiemomentopnamen voor breedte, hoogte, regelafstand, celmarges, schermschaling en meet-DPI - Bewerkingseigen geometrie- en lettertypemeting via
CreateRenderGeometry, met immutabele kalibratie en werkmapgeneratie-identiteit, volledige font- en wrapbewuste cache-keys, begrensd lokaal cachen, en gedeelde conversies voor pixel, punt, kolombreedte, MDW en bruikbare celbreedte - AutoFit legt per bewerking één werkmaplokale geometriemomentopname vast en meet zichtbare celfonts en teruglopende tekst met gekalibreerde regelafstand en marges; paginering legt per build een aparte momentopname vast, laat bestaande logische pagina’s ongewijzigd tot de volgende build, en schrijft nooit werkbladafmetingen
- Bladzichtbaarheid:
Worksheet.Visibility(xlsxSheetVisible/xlsxSheetHidden/xlsxSheetVeryHidden) enIsSelected - Handmatige pagina-einden:
AddRowBreak,AddColBreak, indexopzoeking en hulpfuncties voor bereikverwijdering - AutoFilter-kolomcriteria:
Worksheet.AddAutoFilterColumnmet enkelvoudige AND/OR-filterregels met twee criteria, plusWorksheet.AutoFilterColumns.FindByColIdenDeleteByColIdom criteria direct op te zoeken en te verwijderen (TXLSXAutoFilterColumn) - Basisdatum van de werkmap:
Workbook.Date1904schakelt tussen de 1900- (Windows-standaard) en 1904-epoque (Mac) - Diagonale randen:
TXLSXBorder.DiagonalUpenDiagonalDownzetten de diagonale lijnen aan; deDiagonal-rand draagt de stijl en kleur - Extended font properties:
TXLSXFont.VertAlign(superscript / subscript),OutlineFont,Shadow,Family,CharSet - Named range metadata:
TXLSXDefinedName.HiddenenComment - Sheet view options:
Worksheet.Zoom,DisplayGridLines,DisplayZeros,DisplayRightToLeft,StandardWidth,StandardHeight - OOXML legacy indexed-color palette:
Workbook.IndexedColor[0..63]withResetIndexedColors - External workbook links:
Workbook.ExternalLinks/ TXLSXExternalLink — Target URL + SheetNames metadata round-trip - Externe gegevensverbindingen en queryresultaten:
Workbook.Connections/Worksheet.QueryTables— getypeerde refresh, referenties, commando, web, tekst, parameter-, veld-, tabel- en gedefinieerde-naambindingen met extensieveilige round-trip - Themakleurenondersteuning op
TXLSXFont,TXLSXFillenTXLSXBorderEdge:ColorTheme/ColorIndex/TintAndShade-eigenschappen met prioriteitsvolgorde (theme > indexed > RGB) - BIFF8-conversie via de file- en stream-overloads van
SaveXLSXWorkbookAsXLS, met een deterministisch 56-kleurenpaletplan, behoud van geïndexeerde slots die al door werkmapstijlen in gebruik zijn, gewogen OKLab-kwantisering wanneer directe kleuren de beschikbare slots overschrijden, sparse traversal van geladen cellen en preflight-weigering van rijen of kolommen buiten het XLS-raster; getypeerde printfelden en ondoorzichtige printerdata worden onafhankelijk geconverteerd, BIFF8-grenzen worden gecontroleerd voordat de doelstream wordt geschreven, standaardvelden hebben prioriteit boven dubbele private standaardwaarden, en de OOXML-only-vlagUsePrinterDefaultswordt niet gesynthetiseerd naar klassieke XLS - CSV-export:
Workbook.SaveAsCSV— 4 overloads (FileName of Stream × standaard actief werkblad / expliciete SheetIndex + scheidingsteken), UTF-8 met BOM, RFC 4180-quoting - HTML-export:
Workbook.SaveAsHTMLenTXLSXRange.SaveAsHTMLschrijft HTML5-tabellen voor een hele werkmap-sheet of alleen de geselecteerde rechthoek. Options-overloads accepterenTXLSXHtmlExportOptionsvoor uitvoer van het volledige document, het wegschrijven van stijlen, BOM en tabelklasse- naming - RTF-export:
Workbook.SaveAsRTF— 4 overloads, RTF 1.6-tabel met kolombreedtes, lettertypeopmaak per cel en full-BMP-unicode via signed-16-bit\uN?-escapes
Gedeelde infrastructuur
Beide facades delen een gemeenschappelijke set lagere hulpunits, wat betekent dat stijldescriptoren, hashtabellen, AVL-bomen, ZIP- en XML-I/O, RGB-naar-HLS- conversies en tekenreeksbouwers één keer worden geschreven en door beide paden worden gebruikt Tot de gedeelde hulpunits behoren:
lxStyleXf,lxStyleFont,lxStyleColor,lxStyleFill,lxStyleBorder— modern style descriptorslxRgb— RGB / HLS color conversionlxHashTable,lxKeyList,lxAvlTree,lxCols,lxRows— deduplicerende containers en AVL-gebaseerde bouwstenen voor de cel-heaplxXmlReader,lxXmlWriter,lxZipArchive— OOXML transport layerlxStrBuilder,lxCacheStream,lxWStream,lxZlibStream— stream en string assembly helpers