HotXLS Dokumentation

Übersicht

HotXLS Logo
HotXLS Excel Read/Write Library ist eine Hochleistungs-Excel-Lese-Schreib-Komponente für Delphi & C++Builder Sie kann neue Excel-Tabellen erstellen und bestehende XLS- und XLSX-Arbeitsmappen lesen oder ändern, ohne dass Microsoft Excel oder Office auf dem Rechner installiert sein muss
HotXLS ist vollständig in Object Pascal geschrieben. Es liest und schreibt Excel-Dateien direkt auf der Binär- und OOXML-Ebene, sodass kein COM/OLE-Automatisierungs-Overhead entsteht und keine Abhängigkeit davon besteht, dass Office lizenziert oder vorhanden ist. HotXLS unterstützt Delphi und C++Builder XE5 bis 13 Florence
Klassische XLS-Farbformatierung bleibt absichtlich palettenbasiert. Siehe Klassisches XLS-Farbmodell für die Entscheidung zu ThemeColor / TintAndShade

Dual-Facade-Architektur

HotXLS bietet zwei nebeneinander existierende Facade-Units, sodass alter XLS-Code und neuer XLSX-Code ohne Refactoring nebeneinander bestehen können:
lxHandle Haupt-Facade für das Excel 97–2003 BIFF8-Format (.xls) sowie HTML-, RTF-, CSV- und TSV-Export. Alle bestehenden Benutzercodes verwenden diese Unit weiterhin unverändert. Einstiegspunkte: TXLSWorkbook, TXLSWorksheet, IXLSWorkbook, IXLSRange
lxHandleX Haupt-Facade für das Excel 2007+ OOXML-Format (.xlsx) und OpenDocument Spreadsheet (.ods) Lesen/Schreiben. Bietet eigene Workbook- und Worksheet-Typen, sodass XLSX-spezifisches Verhalten nicht auf den BIFF-Codepfad nachgerüstet wird. Einstiegspunkte: TXLSXWorkbook, TXLSXWorksheet, TXLSXCell
Beide Facades teilen sich dieselbe Formel-Engine, dieselbe Unicode-Unterstützungsschicht und dieselbe Export-Pipeline Siehe XLSX-Facade-Übersicht für die vollständige Klassenhierarchie, die von lxHandleX bereitgestellt wird

Schnellstart

Die folgenden Snippets zeigen den minimalen Code zum Erstellen einer Arbeitsmappe mit einem Arbeitsblatt und zum Schreiben eines Wertes in eine Zelle.

Klassisches XLS (lxHandle)

uses lxHandle;

var
  Book: IXLSWorkbook;
  ws:   TXLSWorksheet;
begin
  Book := TXLSWorkbook.Create;
  // Arbeitsblatt hinzufügen und ihm einen Namen geben
  ws := Book.Sheets.Add;
  ws.Name := 'Sheet1';

  // Werte mit A1-Notation in Zellen schreiben
  ws.Range['A1'].Value := 'Hello';
  ws.Range['B1'].Value := 42;
  ws.Range['C1'].Formula := '=B1*2';

  // Grundlegende Formatierung anwenden
  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');

    // Einen String und einen numerischen Wert schreiben
    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;

    // Ein Währungs-Zahlenformat anwenden
    cell := ws.Cells[2, 2];
    cell.NumberFormat := '$#,##0.00';

    Book.SaveAs('output.xlsx');
  finally
    Book.Free;
  end;
end;
Für einen umfassenderen Durchgang, der beide Facades in einem einzigen Demo-Projekt behandelt, siehe das API Tour Demo

Funktionen

Datei-E/A und Stream-Unterstützung

Lesen Sie vorhandene Excel-Dateien, schreiben Sie neue oder vorhandene Excel-Dateien, verarbeiten Sie klassischen XLS-Passwortschutz und XLSX-verschlüsselt-speichern-Workflows und listen Sie schnell Blattnamen aus XLS- und XLSX-Dateien oder -Streams auf, ohne die gesamte Arbeitsmappe zu laden. Das Öffnen einer CSV als Arbeitsmappe wird über IXLSWorkbook.OpenCSV unterstützt

Zellenwerte und Formeln

Lesen und schreiben Sie Zellenwerte aller nativen Excel-Typen: Zahl, Zeichenfolge, Datum/Uhrzeit, Boolean und Formel. Die integrierte Berechnungs-Engine wertet Formeln sowohl in klassischen XLS- als auch in XLSX-Arbeitsmappen aus und unterstützt:
  • Textfunktionen (LEFT, MID, TRIM, SUBSTITUTE, …)
  • Datums- und Arbeitstagsfunktionen (DATE, NETWORKDAYS, WORKDAY, …)
  • Konstruktions- und Basisumwandlungsfunktionen (BIN2DEC, HEX2DEC, …)
  • Bitweise Funktionen (BITAND, BITOR, BITXOR, …)
  • Statistik- und Aggregatfunktionen (AVERAGE, SUMIF, COUNTIFS, …)
  • Mathematische Funktionen (ROUND, MOD, POWER, …)
Ein OnUserFunction-Callback ermöglicht es Ihnen, benutzerdefinierte oder nicht unterstützte Tabellenfunktionen zur Laufzeit zu behandeln. Siehe OnUserFunction-Callback für die Signatur und Beispiele
Beispiel für Formelauswertung

Zellenformatierung

Voller Zugriff auf Attribute zur Zellendarstellung:
  • Schriftarten — Name, Größe, Farbe (RGB oder Theme-Farbe + Tint), fett, kursiv, unterstrichen, durchgestrichen, hochgestellt, tiefgestellt, Schatten und Umriss
  • Ausrichtung — horizontale und vertikale Ausrichtung, Textausrichtung (Winkel), Einzugsstufe, Textumbruch, an Zellgröße anpassen und Leserichtung (RTL/LTR)
  • Rahmen — alle vier Kanten und Diagonalen, Linienstil, Stärke und RGB- / Theme-Farbe
  • Hintergrund (Füllung) — einfarbige Füllung, Musterfüllungen, Vorder- und Hintergrundfarben, einschließlich Theme-Farbe mit TintAndShade
  • Zahlenformate — integrierte und benutzerdefinierte Formatzeichenfolgen für Datum, Uhrzeit, Währung, Prozentsatz und wissenschaftliche Notation
  • Kommentare / Anmerkungen — Zellenkommentare hinzufügen, lesen und formatieren

Bereichsoperationen

IXLSRange (klassische Facade) und TXLSXRange (XLSX-Facade) bieten einen umfangreichen Satz an Bereichsoperationen:
  • Zellen verbinden und trennen; Zugriff auf den verbundenen Bereich einer beliebigen Zelle
  • Kopieren, Verschieben, Einfügen und Löschen von Bereichen, mit Steuerung der Verschiebungsrichtung
  • Gruppieren und Gruppierung aufheben von Zeilen oder Spalten für Gliederungs-/Reduzierungsansichten
  • Automatische Anpassung (AutoFit) von Zeilenhöhe und Spaltenbreite an den Zelleninhalt
  • Integrierte benannte Zellenstile anwenden (ApplyBuiltinStyle)
  • Auswahl mehrerer Bereiche (TXLSWorksheet.SelectAreas)
  • ForEachCell-Iterations-Callback für Stapelverarbeitung von Zellen

Arbeitsblatt-Funktionen

Kontrolle auf Arbeitsblatt-Ebene umfasst:
  • Blattname, Registerkartenfarbe, Sichtbarkeit (ausgeblendet / sehr ausgeblendet) und indexbasierte Navigation
  • Blattschutz mit feinkörnigen Berechtigungen; Schutz auf Arbeitsmappen-Ebene
  • Fenster fixieren, Fenster teilen und Scroll-Position
  • AutoFilter-Bereiche mit Kriterien; Datenüberprüfungsregeln für Listen
  • Bedingte Formatierung: Farbskalen (2 und 3 Farben), Datenbalken und Symbolsätze
  • Text suchen und Text ersetzen über ein Arbeitsblatt hinweg
  • Ansichtsoptionen: Gitternetzlinienfarbe, Formelansichtsmodus, Nullwerte anzeigen, Überschriften anzeigen, Rechts-nach-links anzeigen, Gliederungssymbole anzeigen und Zoomstufe
  • Strukturierte Tabellen (TXLSTable / TXLSXTable): Hinzufügen, Zugreifen und Formatieren von Excel-Tabellen mit Kopfzeilen und verbundenen Zeilen
  • Diagramme: Diagrammblätter und eingebettete Diagramme über TXLSWorksheetsAddChartSheet und TXLSXChart hinzufügen

Hyperlinks und benannte Bereiche

Hyperlinks (URL, mailto und zellenbezogene In-Workbook-Referenzen) über IXLSHyperLinks hinzufügen und lesen. Benannte Bereiche auf Arbeitsmappen- und Arbeitsblatt-Ebene über IXLSNames / TXLSXDefinedNames definieren und auflösen. Benannte Bereiche können in Formeln verwendet und über RefersToRange auf einen Zellenbereich zurückgeführt werden

Bilder und Formen

Rasterbilder (BMP, JPG, PNG, GIF) über TXLSShapes.AddPicture / TXLSXWorksheet.AddImage in Arbeitsblätter einbetten. Eigenständige Textfelder im klassischen XLS über TXLSShapes.AddTextBox erstellen. Von Excel erstellte OfficeArt-Verbinder und Solver-Regeln in BIFF8-Zeichnungen beibehalten und rohe Shape-FOPT-Optionen über TXLSShape.OfficeArtOptions für Experten-Zeichnungsworkflows freilegen

Seite einrichten und Drucken

Voller Zugriff auf das Drucklayout über IXLSPageSetup:
  • Papierformat (A4, Letter, Legal und viele andere; siehe PaperSize)
  • Ausrichtung (Hochformat / Querformat), Ränder, horizontal / vertikal zentrieren
  • Kopf- und Fußzeilen-Strings mit Excel-Formatierungscodes (fett, kursiv, Seitenzahl, Datum usw.; siehe Kopf-/Fußzeilen-Formatierungscodes)
  • Manuelle horizontale und vertikale Seitenumbrüche
  • Skalierung auf Seiten anpassen; Zoom-Prozentsatz; Druckbereich; Drucktitel (Zeilen / Spalten wiederholen)
  • Entwurfsqualität; Schwarzweiß; Gitternetzlinien drucken; Überschriften drucken; Notizen drucken

Exportformate

Exportieren Sie ganze Arbeitsmappen, einzelne Arbeitsblätter oder beliebige Zellenbereiche nach:
  • HTML — vollständiges Dokument oder ein Inline-Tabellenfragment für Vorschau oder E-Mail-Workflows; steuerbar über TXLSHTMLExport und TXLSXHtmlExportOptions
  • RTF — Rich Text für den Import in Textverarbeitungsprogramme
  • CSV — durch Kommas getrennte Werte mit konfigurierbarem Trennzeichen und Kodierung
  • TSV — durch Tabulatoren getrennte Werte
  • ODS — OpenDocument Spreadsheet über die lxHandleX-Facade

Datenbank- und Grid-Export

Exportieren Sie jeden TDataSet-kompatiblen Datensatz oder ein TDBGrid direkt in Excel, HTML oder RTF, indem Sie die Komponenten TDataToXLS oder TGridToXLS verwenden. Beide Komponenten lösen AfterCell-, AfterRow-, AfterTitle- und AfterGroup-Ereignisse zur feinkörnigen Ausgabesteuerung aus und unterstützen mehrstufige Gruppierungsfelder

VBA-Projekt-Erhaltung

HotXLS behält VBA-Projekt-Payloads bei der Weitergabe von makrofähigen Arbeitsmappen bei. Schreibgeschützte Modul-Inspektion ist über TXLSVBAProject und TXLSVBAModule verfügbar. Rufen Sie IXLSWorkbook.HasVBAProject auf, um einen Payload zu erkennen, und LoadVBAProjectFromFile / SaveVBAProjectToFile, um ihn zwischen Dateien zu übertragen

Unicode und internationaler Text

Die gesamte Zeichenfolgenverarbeitung erfolgt Unicode-nativ. HotXLS liest und schreibt Excel-Dateien, die in einer beliebigen Sprache erstellt wurden, einschließlich CJK, Arabisch, Hebräisch, Thai und anderen Skripten, mit korrekter Unterstützung für bidirektionalen Text und Leserichtung
Beispiel für Unicode-Zeichenunterstützung

Pivot-Tabellen (Klassisches XLS)

Erstellen Sie Pivot-Tabellen aus einem Quellbereich mit TXLSWorksheet.AddPivotTable, konfigurieren Sie die Feldplatzierung und Zahlenformate für Datenfelder und prüfen Sie das Pivot-Modell über TXLSWorksheet.PivotTables. Siehe Klassische XLS-Pivot-Tabellen-API für Feld- und Filterdetails

Vorteile

No Office dependency Liest und schreibt XLS- und XLSX-Dateien direkt auf Binärebene. Microsoft Excel oder Office muss weder installiert noch lizenziert oder ausgeführt werden. Dies beseitigt den COM/OLE-Automatisierungs-Overhead, vermeidet Threading-Beschränkungen, die durch Office-Interop auferlegt werden, und ermöglicht den Einsatz von HotXLS in serverseitigen und Service-Kontexten, in denen eine Desktop-Office-Installation unpraktisch ist
High performance Die BIFF8- und OOXML-Parser sind in nativem Object Pascal ohne Zwischen-XML-DOM-Zuweisung für den Hot Path geschrieben. Große Arbeitsmappen mit Hunderttausenden von Zeilen können mit geringem Spitzenarbeitsspeicher gelesen und geschrieben werden. Gemeinsame String-Deduplizierung und Komprimierung gemeinsamer Formeln werden automatisch angewendet, um die Dateigröße klein zu halten
OLE migration path Die API-Oberfläche der klassischen Facade (Workbook, Worksheet, Range, Font, Borders, Interior, Page Setup) spiegelt eng das von OLE-Automatisierung vertraute Excel-Objektmodell wider. Dies macht die Migration bestehender OLE-basierter Projekte unkompliziert: Ersetzen Sie die COM-Aufrufe durch HotXLS-Aufrufe, entfernen Sie die Office-Abhängigkeit und gewinnen Sie native Leistung
Dual-facade design Alter XLS-Code wird weiterhin unverändert gegen lxHandle kompiliert und ausgeführt, während neuer XLSX-Code die reichhaltigere lxHandleX-Facade verwendet. Die Migration eines Dateiformats nach dem anderen ist sicher und schrittweise
Formula engine included Eine integrierte Multi-Pass-Berechnungs-Engine verarbeitet die gängigsten Tabellenfunktionen, ohne dass Excel beim Öffnen neu berechnen muss. Benutzerdefinierte Funktionen werden über den OnUserFunction-Callback behandelt
Easy to use Drop-in-Delphi-Komponenten (TDataToXLS, TGridToXLS) erfordern keinen Code für häufige Exportaufgaben. Die flüssige Range-API unterstützt A1-Notation, R1C1-Notation und nullbasierte Zeilen-/Spaltenindizierung
Thread-safe file I/O Da es keinen gemeinsam genutzten Office-Prozess gibt, können mehrere TXLSXWorkbook-Instanzen gleichzeitig in unabhängigen Threads ohne Synchronisation erstellt und gespeichert werden, was HotXLS für Server zur Multithread-Berichterstellung geeignet macht

Kompatibilität

HotXLS ist mit den folgenden RAD Studio-Versionen kompatibel:
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-Bit und 64-Bit
Excel file formats XLS (BIFF8, Excel 97–2003), XLSX (OOXML, Excel 2007+), ODS (OpenDocument 1.2)
Export-only formats HTML, RTF, CSV, TSV

Siehe auch