HotXLS-documentatie

Overzicht

HotXLS Logo
HotXLS Excel Read/Write Library is een snelle Excel-lees- en schrijfcomponent voor Delphi & C++Builder Hiermee kunt u nieuwe Excel-spreadsheets maken en bestaande XLS- en XLSX-werkmappen lezen of wijzigen, zonder dat Microsoft Excel of Office op de machine geïnstalleerd hoeft te zijn
HotXLS is volledig in Object Pascal geschreven. Het leest en schrijft Excel-bestanden rechtstreeks op binair en OOXML-niveau, zodat er geen COM/OLE-automatiserings-overhead is en geen afhankelijkheid van Office dat is gelicentieerd of aanwezig is. HotXLS ondersteunt Delphi en C++Builder XE5 tot en met 13 Florence
Klassieke XLS-kleuropmaak blijft bewust op paletten gebaseerd. Zie Klassiek XLS-kleurenmodel voor de ThemeColor / TintAndShade-afweging

Dual-facade-architectuur

HotXLS biedt twee naast elkaar bestaande facade-units, zodat legacy XLS-code en nieuwe XLSX-code naast elkaar kunnen leven zonder enige refactoring:
lxHandle Primaire facade voor het Excel 97–2003 BIFF8-formaat (.xls), plus HTML-, RTF-, CSV- en TSV-export. Alle bestaande gebruikerscode blijft deze unit ongewijzigd gebruiken. Entry points: TXLSWorkbook, TXLSWorksheet, IXLSWorkbook, IXLSRange
lxHandleX Primaire facade voor het Excel 2007+ OOXML-formaat (.xlsx) en OpenDocument Spreadsheet (.ods) lezen/schrijven. Biedt eigen werkmap- en werkbladtypen, zodat XLSX-specifiek gedrag niet wordt teruggevoegd naar het BIFF-codepad. Entry points: TXLSXWorkbook, TXLSXWorksheet, TXLSXCell
Beide facades delen dezelfde formule-engine, dezelfde Unicode-ondersteuningslaag en dezelfde exportpipeline Zie XLSX Facade Overview voor de volledige klassenhiërarchie die lxHandleX blootlegt.

Quick Start

De volgende fragmenten tonen de minimale code om een werkmap met één werkblad te maken en een waarde naar een cel te schrijven.

Classic XLS (lxHandle)

uses lxHandle;

var
  Book: IXLSWorkbook;
  ws:   TXLSWorksheet;
begin
  Book := TXLSWorkbook.Create;
  // Add a worksheet and give it a name
  ws := Book.Sheets.Add;
  ws.Name := 'Sheet1';

  // Write values to cells using A1 notation
  ws.Range['A1'].Value := 'Hello';
  ws.Range['B1'].Value := 42;
  ws.Range['C1'].Formula := '=B1*2';

  // Apply basic formatting
  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');

    // Write a string and a numeric value
    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;

    // Apply a currency number format
    cell := ws.Cells[2, 2];
    cell.NumberFormat := '$#,##0.00';

    Book.SaveAs('output.xlsx');
  finally
    Book.Free;
  end;
end;
Voor een uitgebreidere walkthrough die beide facades in één demo-project behandelt, zie de API Tour Demo

Features

Bestand-I/O en stream-ondersteuning

Lees bestaande Excel-bestanden, schrijf nieuwe of bestaande Excel-bestanden, behandel klassieke XLS-wachtwoordbescherming en XLSX-versleutelde-save-workflows, en vermeld snel bladnamen uit XLS- en XLSX-bestanden of streams zonder de hele werkmap te laden. Het openen van een CSV als werkmap wordt ondersteund via IXLSWorkbook.OpenCSV.

Celwaarden en formules

Lees en schrijf celwaarden van alle native Excel-typen: getal, tekenreeks, datum/tijd, boolean en formule De ingebouwde berekeningsengine evalueert formules in zowel klassieke XLS- als XLSX-werkmappen en ondersteunt:
  • Tekstfuncties (LEFT, MID, TRIM, SUBSTITUTE, …)
  • Datum- en werkdagfuncties (DATE, NETWORKDAYS, WORKDAY, …)
  • Technische functies en basisconversie (BIN2DEC, HEX2DEC, …)
  • Bitsgewijze functies (BITAND, BITOR, BITXOR, …)
  • Statistische- en aggregaatfuncties (AVERAGE, SUMIF, COUNTIFS, …)
  • Wiskundige functies (ROUND, MOD, POWER, …)
Een OnUserFunction-callback laat u aangepaste of niet-ondersteunde werkbladfuncties tijdens runtime behandelen. Zie OnUserFunction-callback voor de handtekening en voorbeelden
Formula evaluation example

Celopmaak

Volledige toegang tot de opmaakkenmerken van cellen:
  • Lettertypen — naam, formaat, kleur (RGB of themakleur + tint), vet, cursief, onderstrepen, doorhalen, superscript, subscript, schaduw en omlijning
  • Uitlijning — horizontale en verticale uitlijning, tekstoriëntatie (hoek), inspringniveau, tekstterugloop, verkleinen tot celgrootte en leesrichting (RTL/LTR)
  • Randen — alle vier randen en diagonalen, lijnstijl, gewicht en RGB-/themakleur
  • Vulling — effen vulling, patroonvullingen, voor- en achtergrondkleuren, inclusief themakleur met TintAndShade
  • Getalnotaties — ingebouwde en aangepaste notatiereeksen voor datum, tijd, valuta, percentage en wetenschappelijke notatie
  • Opmerkingen / annotaties — celopmerkingen toevoegen, lezen en opmaken

Bereikoperaties

IXLSRange (klassieke facade) en TXLSXRange (XLSX-facade) bieden een rijke set bereikoperaties:
  • Cellengebieden samenvoegen en splitsen; toegang tot het samengevoegde gebied van elke cel
  • Bereiken kopiëren, verplaatsen, invoegen en verwijderen, met controle over de verschuivingsrichting
  • Rijen of kolommen groeperen en opheffen voor overzichts-/in-één-klap-weergaven
  • Rijhoogte en kolombreedte automatisch aanpassen aan de celinhoud
  • Ingebouwde benoemde celstijlen toepassen (ApplyBuiltinStyle)
  • Selecties met meerdere gebieden (TXLSWorksheet.SelectAreas)
  • ForEachCell-iteratie-callback voor batchverwerking van cellen

Werkbladfuncties

Controle op werkbladniveau omvat:
  • Bladnaam, tabkleur, zichtbaarheid (verborgen / zeer verborgen) en op index gebaseerde navigatie
  • Bladbeveiliging met granulariteit per machtiging; beveiliging op werkmapniveau
  • Bevroren vensters, gesplitste vensters en schuifpositie
  • AutoFilter-bereiken met criteria; validatieregels voor gegevens vermelden
  • Voorwaardelijke opmaak: kleurschalen (2 en 3 kleuren), gegevensbalken en icoonsets
  • Tekst zoeken en tekst vervangen in een werkblad
  • Weergaveopties: rasterlijnkleur, formulemodus weergeven, nullen weergeven, kopteksten weergeven, rechts-naar-links weergeven, overzichtssymbolen weergeven en zoomniveau
  • Gestructureerde tabellen (TXLSTable / TXLSXTable): Excel-tabellen toevoegen, openen en opmaken met koprijen en totalenrijen
  • Grafieken: grafiekbladen en ingebedde grafieken toevoegen via TXLSWorksheetsAddChartSheet en TXLSXChart

Hyperlinks en benoemde bereiken

Voeg hyperlinks toe en lees ze (URL, mailto en verwijzingen naar cellen in de werkmap) via IXLSHyperLinks. Definieer en los benoemde bereiken op op werkmap- en werkbladniveau via IXLSNames / TXLSXDefinedNames. Benoemde bereiken kunnen in formules worden gebruikt en terug worden omgezet naar een celbereik via RefersToRange.

Afbeeldingen en vormen

Voeg rasterafbeeldingen (BMP, JPG, PNG, GIF) in werkbladen in via TXLSShapes.AddPicture / TXLSXWorksheet.AddImage. Maak zelfstandige tekstvakken in klassiek XLS via TXLSShapes.AddTextBox. Behoud Excel-gemaakte OfficeArt-verbindings- en oplosregels in BIFF8-tekeningen en leg ruwe vorm-FOPT-opties bloot via TXLSShape.OfficeArtOptions voor deskundige tekenworkflows.

Pagina-instelling en afdrukken

Volledige toegang tot de afdrukindeling via IXLSPageSetup:
  • Papierformaat (A4, Letter, Legal en vele andere; zie PaperSize)
  • Stand (staand / liggend), marges, horizontaal / verticaal centreren
  • Kop- en voettekstreksen met Excel-opmaakcodes (vet, cursief, paginanummer, datum, enz.; zie Kop/voettekst-opmaakcodes)
  • Handmatige horizontale en verticale pagina-einden
  • Tegenaanpassen-schalen; zoompercentage; afdrukgebied; herhaalde titels (herhalende rijen / kolommen)
  • Conceptkwaliteit; zwart-wit; rasterlijnen afdrukken; kopteksten afdrukken; notities afdrukken

Exportformaten

Exporteer volledige werkmappen, afzonderlijke werkbladen of willekeurige celbereiken naar:
  • HTML — volledig document of een inline tabelfragment voor preview- of e-mailworkflows; beheersbaar via TXLSHTMLExport en TXLSXHtmlExportOptions
  • RTF — rich text voor import in tekstverwerkers
  • CSV — door komma's gescheiden waarden met configureerbaar scheidingsteken en codering
  • TSV — door tabs gescheiden waarden
  • ODS — OpenDocument Spreadsheet via de lxHandleX-facade

Database- en rasterexport

Exporteer elke TDataSet-compatibele dataset of een TDBGrid rechtstreeks naar Excel, HTML of RTF met behulp van de TDataToXLS- of TGridToXLS-componenten. Beide componenten starten AfterCell, AfterRow, AfterTitle- en AfterGroup-gebeurtenissen voor fijnmazige uitvoercontrole en ondersteunen groepering op meerdere niveaus.

VBA-projectbehoud

HotXLS behoudt VBA-projectpayloads bij het heen en weer lezen van macro-ingeschakelde werkmappen. Alleen-lezen inspectie van modules is beschikbaar via TXLSVBAProject en TXLSVBAModule. Roep IXLSWorkbook.HasVBAProject aan om een payload te detecteren en LoadVBAProjectFromFile / SaveVBAProjectToFile om deze tussen bestanden over te dragen.

Unicode en internationale tekst

Alle tekenreeksverwerking is Unicode-native. HotXLS leest en schrijft Excel-bestanden die in elke taal zijn gemaakt, inclusief CJK, Arabisch, Hebreeuws, Thais en andere schriften, met correcte bidirectionele tekst- en leesrichting- ondersteuning
Unicode character support example

Draaitabellen (klassiek XLS)

Maak draaitabellen uit een bronbereik met TXLSWorksheet.AddPivotTable, configureer veldplaatsing en getalnotaties voor gegevensvelden en inspecteer het draaitabelmodel via TXLSWorksheet.PivotTables. Zie Klassieke XLS-draaitabel-API voor details over velden en filters

Voordelen

No Office dependency Leest en schrijft XLS- en XLSX-bestanden rechtstreeks op binair niveau. Microsoft Excel of Office hoeft niet te worden geïnstalleerd, gelicentieerd of uitgevoerd. Dit elimineert COM/OLE-automatiserings-overhead, vermijdt threadbeperkingen die door Office-interop worden opgelegd en stelt HotXLS in staat om te worden gebruikt in server- en servicecontexten waar een desktop-Office-installatie onpraktisch is
High performance De BIFF8- en OOXML-parsers zijn in native Object Pascal geschreven zonder tussentijdse XML-DOM-toewijzing voor het hot path. Grote werkmappen met honderdduizenden rijen kunnen worden gelezen en geschreven met een lage piek aan geheugen. Deduplicatie van gedeelde tekenreeksen en compressie van gedeelde formules worden automatisch toegepast om bestanden klein te houden
OLE migration path Het klassieke-facade-API-oppervlak (werkmap, werkblad, bereik, lettertype, randen, vulling, pagina-instelling) spiegelt nauw het Excel-objectmodel dat bekend is van OLE-automatisering. Dit maakt het migreren van bestaande op OLE gebaseerde projecten eenvoudig: vervang de COM-aanroepen door HotXLS-aanroepen, verwijder de Office- afhankelijkheid en win native prestaties
Dual-facade design Legacy XLS-code blijft ongewijzigd compileren en draaien tegen lxHandle, terwijl nieuwe XLSX- code de rijkere lxHandleX-facade gebruikt. Eén bestandsformaat per keer migreren is veilig en incrementeel
Formula engine included Een ingebouwde meerpassen-berekeningsengine behandelt de meest voorkomende werkbladfuncties zonder dat Excel opnieuw hoeft te berekenen bij het openen. Aangepaste functies worden behandeld via de OnUserFunction- callback
Easy to use Kant-en-klare Delphi-componenten (TDataToXLS, TGridToXLS) vereisen geen code voor veelvoorkomende exporttaken. De vloeiende bereik-API ondersteunt A1-notatie, R1C1-notatie en op nul gebaseerde rij-/kolomindexering
Thread-safe file I/O Omdat er geen gedeeld Office-proces is, kunnen meerdere TXLSXWorkbook-instanties gelijktijdig worden gemaakt en opgeslagen op onafhankelijke threads zonder synchronisatie, waardoor HotXLS geschikt is voor servers die rapporten genereren op meerdere threads

Compatibiliteit

HotXLS is compatibel met de volgende RAD Studio-versies:
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 32-bits en 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

Zie ook