HotXLS-Dokumentation / API-Referenz

Portable Headless-Ausgabe

Verfügbar ab Version 2.384.100 als begrenzte Ausgabepipeline mit expliziten Capture- und Rendering-APIs

Erfassen Sie einen unterstützten Bereich aus einer Classic-XLS- oder XLSX-Arbeitsmappe unter Windows, übertragen Sie seinen unveränderlichen Snapshot und rendern Sie PDF, SVG oder PNG unter Linux oder macOS mit Free Pascal und nativem Cairo

Der Capture-Adapter nutzt die Arbeitsmappen-Engine; Windows-Capture verwendet ihren Standard-Geometriedienst, während natives Linux- und macOS-Capture einen expliziten FreeType/HarfBuzz-Geometriedienst liefern kann, der auf anwendungsgewählten Schriftdateien basiert

Der separate native Consumer akzeptiert lxPortableRender-Szenen über lxPortableCairo, ohne Excel oder eine Desktop-Sitzung; seine Geometrie-API nutzt ebenfalls die bestehenden portablen Arbeitsmappen-View- und Render-Geometrie-Units

Der Consumer akzeptiert eine unveränderliche Szene oder einen Transfer-Stream; Plattformanforderungen für das Laden und Berechnen von Arbeitsmappen sind separat unter Free-Pascal-Unterstützung beschrieben

Einen vorhandenen Arbeitsmappenbereich erfassen

CaptureXLSPortableRenderSnapshot in lxPortableWorkbookCapture akzeptiert ein IXLSWorkbook oder IXLSXWorkbookOwner mit expliziten oder Standard-TXLSPortableRenderLimits; zwei zusätzliche Überladungen akzeptieren explizite Limits gefolgt von einem IXLSRenderGeometry-Provider, der auf die Capture-View beschränkt ist

SheetIndex und inklusive Row1, Col1, Row2, Col2 sind 1-basiert; der entstehende Snapshot speichert nullbasierte Positionen relativ zum erfassten Rechteck

program CaptureRectangle;
{$APPTYPE CONSOLE}
uses SysUtils, Classes, lxHandleX, lxPortableRender,
  lxPortableWorkbookCapture;
var
  Workbook: TXLSXWorkbook;
  Owner: IXLSXWorkbookOwner;
  Snapshot: IXLSPortableRenderSnapshot;
  Stream: TFileStream;
begin
  Workbook := TXLSXWorkbook.Create;
  Owner := Workbook;
  if Workbook.Open('report.xlsx') <> 1 then
    raise Exception.Create('Cannot open report.xlsx');
  Snapshot := CaptureXLSPortableRenderSnapshot(Owner, 1, 1, 1, 30, 6);
  Stream := TFileStream.Create('report.hxrs', fmCreate);
  try
    SaveXLSPortableRenderSnapshot(Snapshot, Stream,
      XLSDefaultPortableRenderLimits);
  finally
    Stream.Free;
  end;
  Owner := nil;
end.

Halten Sie das Owner-Interface am Leben, solange Sie das Arbeitsmappenobjekt nutzen; geben Sie das Interface frei, statt eine interface-besessene Arbeitsmappe manuell freizugeben

Für Classic XLS verwenden Sie TXLSWorkbook und IXLSWorkbook aus lxHandle mit demselben Capture-Aufruf

Capture liest vorhandene Formel-Caches und weist jede Formel im Rechteck ohne Cache zurück; es berechnet nie implizit neu, holt nie externe Daten und registriert nie neue Stile in der Quellarbeitsmappe

Berechnen Sie vor dem Capture explizit neu, wenn Ihre Anwendung frische Formelergebnisse braucht; ein vorhandener Cache wird so gerendert, wie er gespeichert ist, daher zertifiziert Capture nicht seine Aktualität

Die Operation hält eine Lese-View und prüft die Arbeitsmappen-Generation vor der Rückgabe; ihr zurückgegebener Snapshot ist vom Arbeitsmappen-Besitz abgekoppelt und bleibt nach dem Freigeben der Arbeitsmappe nutzbar

Erscheinungsbild und Capture-Grenzen

Der Snapshot enthält formatierten Anzeigetext, physische Abmessungen in Punkten, aufgelöste RGB-Farben, unterstützte Zellenschriften und -ausrichtungen, Füllungen, Rahmen und vollständige verbundene Rechtecke; versteckte Zeilen und Spalten haben Größe null

Unterstütztes Schrift-Erscheinungsbild umfasst fett, kursiv, einfache Unterstreichung und Durchstreichung; unterstütztes Zellen-Erscheinungsbild umfasst Volltonfüllungen, links/mittig/rechts horizontale Ausrichtung, oben/mittig/unten vertikale Ausrichtung, Umbruch, Schrumpfen und Leserichtung von rechts nach links

Dünne, mittlere, dicke, Haar-, doppelte, gepunktete, gestrichelte und mittelgestrichelte Arbeitsmappenrahmen mappen auf die portablen Rahmenstile und Punktbreiten; andere Rahmenstile weisen zurück

Unterstützter Rich Text trägt effektive Run-Schriften, Punktgrößen, RGB-Farben, fett, kursiv, einfache Unterstreichung, Durchstreichung sowie Run-Level-Hoch- oder Tiefstellung; einfache Zellen-Umriss/Schatten/vertikale Schrifteffekte, nicht unterstützte Unterstreichungsstile, Gradient- oder gemusterte Füllungen, diagonale Rahmen, Einzug, Textrotation und nicht unterstützte Ausrichtungen weisen zurück

Ein Capture-Rechteck muss jede verbundene Zelle vollständig enthalten; beschnittene, überlappende oder inkonsistente Verbindungen und inkompatible Stile entlang einer verbundenen Außenkante weisen zurück

Blatthintergründe und nicht unterstützte Blattarten weisen das Capture zurück; unterstützte PNG/JPEG-Bilder und gewöhnliche Rechteck-/Ellipsen-Textformen in beiden Arbeitsmappen-Fassaden werden als geordnete Szenenobjekte erfasst, zusammen mit XLSX-Zellenbildern, Boolean-Checkboxen und dem nachfolgend beschriebenen unterstützten gecachten XLSX-Diagramm-Subset; nicht unterstützte Diagramme, Shape-Presets, WordArt, gruppierte Transforms, schwebende Steuerelemente, Slicer, Timelines und Sparklines weisen zurück, wenn ihre aufgelösten Footprints das Rechteck schneiden

Nicht unterstützter Inhalt mit zuverlässig aufgelöstem Footprint außerhalb des Rechtecks kann neben dem Capture existieren; ein nicht auflösbarer Zeichnungs-Footprint weist zurück, statt potenziell überlappenden Inhalt stillschweigend wegzulassen

Classic-Tabellenstyling, das das Rechteck schneidet, weist zurück; XLSX eingebaute und unterstützte eigene Table-Abschnitte werden in abgekoppeltem Stil-Kontext aufgelöst, mit Abschnitt-großen Streifen und direkten Zellformat-Overrides

Für unterstützte importierte Table-Vollton- oder implizite Differentialfüllungen liefert RGB bgColor den sichtbaren Hintergrund; alleiniges RGB fgColor lässt den geerbten Hintergrund unverändert, und ein Abschnitt mit beiden Farben nutzt seine Hintergrundfarbe

Importierte Table-Abschnitte, die Erscheinungsbild enthalten, das die typisierte Zusammenfassung nicht abbilden kann, weisen zurück, wenn dieser Abschnitt greift, einschließlich Unterstreichung, Zahlenformate, explizit gelöschtes fett/kursiv, Schriftschemata, ein explizites No-Fill-Muster und nicht unterstützte Farbformen; ein nicht verwandter Abschnitt außerhalb des erfassten Rechtecks blockiert das Capture nicht

Unterstützte bedingte Formatierung wird ohne Formelauswertung angewendet: gecachte numerische oder Datumsvergleiche gegen literale numerische Grenzen, literale Boolean- oder numerische Ausdrücke, Text-Enthält/Präfix/Suffix-Regeln, Leeren und Fehler; höherpriores Erscheinungsbild gewinnt pro unterstützter Property, und XLSX StopIfTrue stoppt niederpriorigere passende Regeln

Classic-Textregeln erfordern eine literale String-Nadel und matchen gecachte String-Zellen; XLSX-Textregeln nutzen ihre gespeicherten Textkriterien

Unterstütztes Differential-Erscheinungsbild umfasst aufgelöste Themenfarben mit Tönung und einfache indizierte Farben; importierte automatische Farben, Nicht-Thema-Tönung, eine Differentialfüllung mit Vorder- und Hintergrundfarbe sowie nicht unterstützte Rahmen-, Ausrichtungs-, Durchstreich- oder andere nicht abgebildete Differentialerscheinungen weisen zurück, wenn die passende Regel greift

Bedingte Formeln mit Auswertungsbedarf, Aggregat- oder datumsabhängige Regeln, Farbskalen, Datenbalken und Symbolsätze weisen zurück, wo sie angetroffen werden; die Anzahl überlappender Regeln bedingter Formatierung ist begrenzt

Die Date1904-Konvertierung wählt die anwendbare rohe numerische Formatsektion, bevor der Kalender-Offset angewendet wird; inaktive Kalendersektionen ändern die gewöhnliche numerische Anzeige nicht, und Boolean-Werte bleiben Boolean

Eine gewählte Date1904-Kalendersektion zusammen mit Formatbedingungen oder verstrichene-Zeit-Konstrukten weist zurück; gequotete oder escapte Sektionstrenner weisen ebenfalls zurück, und diese Grenze blockiert eine gewählte gewöhnliche numerische Sektion nicht nur deshalb, weil eine andere Sektion ein Kalenderformat ist

Rich Text und geordnete Zeichnungsszenen

TXLSPortableCell.RichText ist ein Array aus TXLSPortableTextRun-Records mit Text, FontFamily, FontSizePoints, FontStyles, ColorRGB und BaselineShiftPoints; verketteter Run-Text muss exakt dem Zellenanzeigetext entsprechen

XLSX-Runs erben weggelassene Properties von der effektiven erfassten Zellenschrift, einschließlich unterstützter Tabellen- und bedingter Formatierung; explizit gesetzte false-Flags und explizite none/baseline/automatic-Farbwerte überschreiben die Vererbung

Native Shared Strings und Inline-Strings bewahren Run-Grenzen und Leerraum; nicht unterstützte native Font-Kinder, Attribute, Namespaces, Themen-/indizierte Rich-Farben und phonetische Annotationen weisen zurück, statt sichtbares Erscheinungsbild stillschweigend zu verlieren

Classic-Runs lösen ihre gespeicherten BIFF-Font-Indizes zu vollständigen effektiven Run-Schriften auf; phonetische Metadaten und nicht unterstützte Run-Schriften weisen zurück, und Capture behält Arbeitsmappen-Generation und Stil-Pools

Classic-Textformen lesen vorhandene OfficeArt-Properties und TXO-Font-Runs, ohne Zeichnungs-Wrapper zu erzeugen oder die Arbeitsmappe zu ändern; Anker nutzen echte Zeilen-/Spaltenabmessungen und Offsets, unterstützte Volltonfüllungen und Umrisse behalten ihre Farben und Breiten, und eingebettete PNG/JPEG-Bytes werden vor der Übertragung abgekoppelt

Rechtecktext nutzt die nativen 7,2-Punkt-Horizontal- und 3,6-Punkt-Vertikalmargen; Ellipsentext nutzt zusätzlich sein einbeschriebenes Textrechteck und hält gewöhnlichen Text innerhalb des Formenumrisses in beiden Arbeitsmappen-Fassaden

Importierte Classic-Rechteck- und Ellipsen-Container behalten ihren typisierten Text und ihre Formatierung; übersprungene native Shape- oder Gruppenmetadaten ohne aufgelösten Footprint weisen das Capture explizit zurück, während unbekannte Objekt-End-Records, Zeichnungserweiterungen, Rotation, nicht-Vollton-Füllungen und nicht unterstützte Linienstile ein schneidendes Objekt zurückweisen

Importierte XLSX-Zweizellen-Rechteck- und Ellipsen-Anker unterstützen explizite RGB-Volltonfüllungen mit Alpha, Vollton- oder gestrichelte/gepunktete Umrisse, physische Anker-Offsets und einen einzigen gewöhnlichen Rich-Text-Absatz; jeder Run behält seine effektive Schriftfamilie, Punktgröße, Farbe, fett, kursiv, einfache Unterstreichung und Durchstreichung, einschließlich expliziter fett- oder kursiv-Resets

Der importierte Shape-Reader reserviert rohen XML-Scratch-Speicher vor dem Parsen und prüft Item-, Byte- und Textbudgets kooperativ; er behält Arbeitsmappen-Zeichnungsreihenfolge und Lese-Leases, ohne Shape-Modelle oder fehlende Zellen zu erzeugen

Unbekannte native Shape-Properties, Effekte, Themen, Rotationen, gruppierte Transforms, mehrere Absätze und nicht unterstützte Ankerarten weisen explizit zurück; ein aufgelöster nicht unterstützter Footprint außerhalb des Capture-Rechtecks blockiert die angeforderte Region nicht

Run-Level-Hoch- und Tiefstellung nutzen zwei Drittel der Run-Schriftgröße und eine Baselines-Verschiebung von einem Drittel ihrer ursprünglichen Punktgröße; eine Stilgrenze, die einen Unicode-Shaping-Cluster spaltet, oder eine CRLF-Folge, die inkompatible Run-Grenzen kreuzt, weist während des nativen Layouts zurück

TXLSPortableSceneObject trägt ein Kind, punktbezogenes X, Y, Width, Height, ein Beschneidungsrechteck, Füll-/Umrissfarben und Opazität, optionale Pfadpunkte, eine Textzelle oder encodierte Raster-Bytes und Abmessungen

TXLSPortableSceneKind enthält xpskRectangle, xpskEllipse, xpskPolyline, xpskPolygon, xpskText, xpskPNG und xpskJPEG; die Array-Reihenfolge ist die Zeichnungsreihenfolge, spätere Objekte überdecken frühere Objekte

Die zusätzliche CreateXLSPortableRenderSnapshot-Überladung akzeptiert ein TXLSPortableSceneObjects-Array; fragen Sie IXLSPortableRenderSceneSnapshot für nullbasierte Objects und ObjectCount ab, deren Getter abgekoppelte Kopien einschließlich Run-, Punkt- und Raster-Arrays liefern

Zellenbilder und Checkbox-Pfade gehen schwebenden Zeichnungen voraus; schwebende Zeichnungen behalten Arbeitsmappenreihenfolge, physische Anker und Viewport-Beschneidung, und Textformen nutzen die Minor-Theme-Schrift mit 11 Punkten und 7,2-Punkt-Horizontal- sowie 3,6-Punkt-Vertikalmargen

PNG- und JPEG-Bilder werden nach Header-, Pixelgrößen- und Byte-Preflight nativ dekodiert; unterstützte schwebende Bilder behalten Transparenz und Streckgeometrie, während Zellenbilder in die Zelle oder das vollständige verbundene Rechteck eingepasst werden und ihr Seitenverhältnis bewahren

Beschneiden, Rotation, Schatten, Helligkeits-/Gamma-Anpassung, Kachelung, SVG-Begleiter und Live-Kamera-Bindungen bleiben nicht unterstützt; erhaltenes Bild-XML wird gegen das unterstützte Erscheinungsbild validiert, daher weisen versteckte Bilder, unbekannte verschachtelte Metadaten, fremd-namespaced Properties, nicht rechteckige Bildgeometrie und nicht modellierte Transforms nur zurück, wenn ihr Footprint das Capture überlappt

Boolean-Zellen-Checkboxen nutzen einen themenneutralen Vektorrahmen und ein optionales Häkchen, einschließlich effektiver Steuerelemente, die aus Zeilen- und Spaltenformaten geerbt wurden; der angeforderte Zellendurchlauf wird vor der Traversierung begrenzt, andere Steuerelementarten sowie leere oder nicht-Boolean-Checkboxwerte weisen zurück, und unterstützte Zellenszenen unterdrücken skalaren Boolean- oder Bildfehler-Fallbacktext

Eine Checkbox-Standard ist Einfügemetadaten und fabriziert keinen Boolean für eine fehlende Zelle; explizites direktes Zellen-Steuerelement-Löschen maskiert ein geerbtes Steuerelement, während Capture-Lesevorgänge sparse Abwesenheit und die Arbeitsmappen-Generation bewahren

XLSReadPortableImageDimensions validiert ein begrenztes PNG-IHDR oder einen unterstützten Acht-Bit-sequenziellen/progressiven JPEG-Frame und liefert seine deklarierte Breite und Höhe; das Dekodieren bleibt die Verantwortung des Renderers

IXLSPortableSceneCaptureSource.ReadPortableSceneObjects nutzt 1-basierte Arbeitsmappenkoordinaten und punktbezogene Szenenkoordinaten relativ zum Bereich, validiert Bereich und kooperative Limits und liefert verbrauchte Byte-, Text- und Item-Zählungen; HasPortableCellScene identifiziert Zellen, deren skalare Anzeige durch ihre erfasste Szene ersetzt wird

Das native Layout zählt mit CellCount Rasterzellen und LineCount zusätzlich Textszenenobjekte; der Zeilen-CellIndex eines Textobjekts ist CellCount plus seine nullbasierte Sequenz unter den Textszenenobjekten, während GetCellGeometry weiterhin auf Rasterzellen beschränkt bleibt

Skalare Snapshots serialisieren weiterhin als HXRSNP01; Snapshots mit Runs oder Szenenobjekten serialisieren als HXRSNP02, und der Loader akzeptiert beide Versionen mit demselben unveränderlichen Besitz- und Input-Position-Rollback-Kontrakt

Das kombinierte Item-Budget zählt gespeicherte Zellen, Rich-Runs, Szenenobjekte und Pfadpunkte; Bytelimits berücksichtigen gestagte und abgekoppelte Arrays, Text, encodierte Raster-Payloads und begrenzte native Metadateninspektion vor der Allokation

Portabler Snapshot-API

SymbolKontrakt
EXLSPortableRenderException bei ungültigen Snapshot-Daten, nicht unterstütztem Capture-Erscheinungsbild, unavailable nativem Backend, Ressourcenlimits oder Renderfehlern
TXLSPortableFontStyle, TXLSPortableFontStylesxpfsBold, xpfsItalic, xpfsUnderline und xpfsStrikeout, als Menge kombiniert
TXLSPortableHorizontal, TXLSPortableVerticalxphLeft, xphCenter, xphRight sowie xpvTop, xpvCenter, xpvBottom
TXLSPortableBorderStyle, TXLSPortableBorderxpbsNone, xpbsSolid, xpbsDashed, xpbsDotted und xpbsDouble; jeder Rahmen trägt Style, WidthPoints und ColorRGB
TXLSPortableCellNullbasierte Row/Column, positive RowSpan/ColumnSpan, Anzeige-Text, FontFamily, FontSizePoints, FontStyles, TextColorRGB, FillColorRGB, HasFill, WrapText, ShrinkToFit, RightToLeft, Horizontal, Vertical und vier LeftBorder/TopBorder/RightBorder/BottomBorder-Records
TXLSPortableCells, TXLSPortableSizesDynamische Arrays gespeicherter Zellen sowie physischer Zeilen-/Spaltengrößen in Punkten
TXLSPortableRenderLimitsMaxGridCells, MaxStoredCells, MaxBytes und MaxTextCharacters begrenzen Konstruktion, Capture und Serialisierung
XLSDefaultPortableRenderLimitsLiefert 2000000 Rasterzellen, 2000000 gespeicherte Zellen, 67108864 Bytes und 16777216 UTF-16-Textzeichen
XLSDefaultPortableCellInitialisiert eine Ein-Zellen-Spanne mit Calibri bei 11 Punkten und standardmäßigem nullwertigem Erscheinungsbild; setzen Sie Position und gewünschtes Erscheinungsbild vor der Konstruktion
CreateXLSPortableRenderSnapshotValidiert und kopiert Generation, Zeilenhöhen, Spaltenbreiten und gespeicherte Zellen in ein abgekoppeltes unveränderliches Interface; Zellen müssen eindeutig sein, in Row-major-Reihenfolge, innerhalb der Grenzen und nicht überlappende Spans haben
IXLSPortableRenderSnapshotNur lesende Generation, RowCount, ColumnCount, CellCount, nullbasierte RowHeightPoints, ColumnWidthPoints und kopierte Cells-Records
Snapshot-Getter-MethodenGetGeneration, GetRowCount, GetColumnCount, GetCellCount, GetRowHeight, GetColumnWidth und GetCell legen dieselben Werte offen; ungültiger indizierter Zugriff löst eine Exception aus
SaveXLSPortableRenderSnapshotValidiert und serialisiert einen Snapshot in einen begrenzten privaten Puffer und kopiert dann die vollständige HXRSNP01- oder HXRSNP02-Payload in den gelieferten Stream an dessen aktueller Position
LoadXLSPortableRenderSnapshotLiest den versionierten Little-Endian-Snapshot mit striktem UTF-8-Text, validiert Zählungen, Geometrie, Stile und Spans und weist nachfolgende Daten zurück; ein Fehlschlag stellt die Input-Stream-Position wieder her

Alle Limits müssen positiv sein; das validierte Maximum sind 2000000 Raster-/gespeicherte Zellen, 1073741824 Bytes und 268435456 Textzeichen, mit Abmessungen von höchstens 1048576 Zeilen mal 16384 Spalten

MaxGridCells zählt das gesamte Rechteck einschließlich nicht gespeicherter leerer Zellen; CellCount zählt gespeicherte sichtbare Zellen und verbundene Anker und kann kleiner sein

Generation zeichnet die Quellgeneration oder einen anwendungsgelieferten Wert auf; es sind Metadaten, kein lebender Link zu einer Arbeitsmappe und keine automatische Aktualitätsprüfung

Natives Rendering und explizite Schriften

XLSPortableCairoBackendAvailable meldet die Verfügbarkeit des kompilierten nativen Backends; native Ausgabe erfordert Free Pascal unter Linux oder macOS, mit Cairo-, FreeType-, HarfBuzz- und FriBidi-Bibliotheken, die dem Prozess verfügbar sind

macOS-Builds linken die vier nativen Bibliotheken explizit; ein privater Abhängigkeitspräfix und ein expliziter Child-Process-Loader-Pfad können sie liefern, ohne gemeinsame Compiler-Einstellungen oder Shell-Profile zu ändern

Windows Delphi XE5, Win32 und Win64 können die portablen Interfaces kompilieren und Snapshot-Serialisierung nutzen, aber die native Cairo-Layoutvorbereitung meldet dort Backend-Unverfügbarkeit

Übergeben Sie eine explizite Schriftkette an PrepareXLSPortableCairoLayout; der Renderer probiert zuerst passende Familie und fett/kursiv-Stil, dann gleichstilige Fallbacks in gelieferter Reihenfolge, und verlangt Glyphenabdeckung für jeden unterstützten Textcluster

Liefern Sie die tatsächlichen Regular-, Bold-, Italic- und BoldItalic-Dateien, die Ihr erfasster Inhalt braucht; keine Systemfont-Erkennung und keine synthetische fett/kursiv-Substitution findet statt, und fehlende Dateien, Stil-Mappings oder Glyphenabdeckung weisen zurück

Schrift-Bytes werden vor dem Shaping erfasst, sodass eine Dateiänderung spätere Layouts betrifft, während ein vorhandenes Layout seine erfassten Bytes behält; FaceIndex wählt den nichtnegativen Face in einer Schriftdatei oder Sammlung

Native Operationen werden zur FreeType-Face-Sicherheit serialisiert; unveränderliche Snapshots und vorbereitete Layoutinspektion brauchen keine lebende Arbeitsmappe

Fonts[0].FamilyName := 'Calibri';
Fonts[0].FileName := '/srv/fonts/Regular.ttf';
Fonts[0].FaceIndex := 0;
Fonts[0].Bold := False;
Fonts[0].Italic := False;

Hier ist Calibri ein expliziter Familienalias für die gewählte Datei und erlaubt ein anwendungsgesteuertes Schriftmapping; prüfen Sie Ausgabe-Metriken, wenn Sie auf eine andere Schrift mappen

Der Renderer unterstützt harte Zeilenumbrüche, Vier-Leerzeichen-Tab-Expansion, bidirektionale Absatzanordnung, geformte Ligaturen und kombinierende Zeichen, greedy Wrapping und Schrumpfen zum Passen; Umbruch hat Vorrang vor Schrumpfen

Das Wrapping bewahrt die implementierten kombinierenden Zeichen-, Variationsselektor-, ZWJ- und Virama-Cluster-Grenzen und bevorzugt Leerzeichen und ideographische Leerzeichen; es ist keine vollständige UAX-#29-Graphem-Implementierung oder ein Unicode-Zeilenumbruch-Algorithmus, und Regional-Indicator- sowie Hangul-Jamo-Umbruchgrenzen sind nicht garantiert

Schriftgrößen lösen zu 1/64 Punkt auf, und Text wird an Zellgrenzen beschnitten; PDF bettet explizite Schriften mit logischen Textmappings ein, SVG nutzt Vektor-Glyphenpfade, und PNG zeichnet dieselben positionierten Glyphen mit der angeforderten DPI

Layout vorbereiten und inspizieren

SymbolKontrakt
TXLSPortableFontFile, TXLSPortableFontFilesEine explizite Zuordnung enthält FamilyName, FileName, FaceIndex, Bold und Italic; das dynamische Array ist geordnet und enthält zwischen 1 und 64 Zuordnungen
TXLSPortableCairoFormat, TXLSPortableOutputFilesxpcfPDF, xpcfSVG oder xpcfPNG sowie ein Array von Ausgabedateinamen, das der Dateispeicher liefert
TXLSPortableCairoOptionsSeitenbreite/-höhe, vier Margen, Zell-Padding und Raster-DPI plus Seiten-, Glyphen-, Zeilen-, Layout-, Ausgabe-, Schrift-, Shaping- und Zeichenlimits
XLSDefaultPortableCairoOptionsInitialisiert jede Option mit begrenzten Standardwerten; verwenden Sie es, bevor Sie einzelne Felder überschreiben
PrepareXLSPortableCairoLayoutValidiert und kopiert einen Snapshot, erfasst explizite Schrift-Bytes und liefert eine eigene vorbereitete TXLSPortableCairoLayout; geben Sie sie mit Free frei
TXLSPortableCairoLayoutLegt PageCount, LineCount, CellCount, GetTextLine, GetCellGeometry, SaveToStream, Save und Destroy offen
TXLSPortableTextLineInfoEin kopierter Zeilenrecord hat CellIndex, GlyphCount, XPoints, BaselinePoints, WidthPoints, FontSizePoints und logischen Text
TXLSPortableCellGeometryEin kopiertes Rechteck hat XPoints, YPoints, WidthPoints und HeightPoints im vollständigen Layout
GetTextLine(Index), GetCellGeometry(Index)Nullbasierte indizierte Inspektion vorbereiteter Zeilen und gespeicherter Zellen; ungültige Indizes weisen zurück

Die Paginierung beschneidet feste Druckbereich-Kacheln in über-then-runter-Reihenfolge; eine Zelle oder ein Textfragment, das Seitengrenzen kreuzt, erscheint auf jeder schneidenden Seite, ohne automatisches Ganz-Zellen-Anpassen, Wiederholung von Arbeitsblatt-Drucktiteln oder Interpretation der Arbeitsmappen-Seiteneinrichtung

Renderer-Optionen und Grenzen

FelderStandardwerte und Bedeutung
PageWidthPoints, PageHeightPoints595 mal 842 Punkte
MarginLeftPoints, MarginTopPoints, MarginRightPoints, MarginBottomPointsje 36 Punkte; Margen müssen ein positives druckbares Rechteck übrig lassen
CellPaddingPoints, RasterDPI2 Punkte und 96 DPI; die DPI beeinflusst PNG-Abmessungen
MaxPages, MaxGlyphs, MaxLines256 Seiten, 2000000 geformte Glyphen und 200000 Textzeilen
MaxLayoutBytes268435456 Bytes für begrenzte Layoutarbeit und Rasterflächenprüfungen
MaxOutputBytes268435456 Bytes pro gerendertem Ausgabepuffer, umfassend das vollständige PDF oder eine SVG/PNG-Seite statt der Summe separater Seitendateien
MaxFontBytes134217728 Bytes über explizite Schrift-Eingabedateien für ein Layout
MaxShapedCharacters, MaxDrawOperationsje 16000000, begrenzt Shaping-Arbeit und seitenweise Zellen-Zeichenarbeit

Ungültige oder nicht endliche Geometrie und nichtpositive Arbeitsbudgets weisen zurück; Seitendimensionen sind auf 100000 Punkte und Raster-DPI auf 1200 begrenzt, mit zusätzlichen Byte-, Zähl- und Rasterflächenprüfungen vor dem Rendering

Der native prozessweite Schrift-Byte-Pool erlaubt zusätzlich höchstens 256 unterschiedliche Puffer und 256 MiB; byteidentische Puffer dürfen Speicher teilen, und Kapazität wird erst freigegeben, wenn der tatsächliche Cairo-besessene Font Face seinen Puffer freigibt

Geben Sie jedes Layout frei, wenn Sie fertig sind; die Bibliothek setzt keine gemeinsamen Cairo-Caches zurück, und ein logisch abgeschlossenes Layout kann Schrift-Bytes resident lassen, während natives Cairo weiterhin einen Face besitzt

Ausgabe schreiben und Fehler behandeln

SaveToStream(Stream, Format, PageIndex = 0) schreibt alle Seiten für PDF und verlangt PageIndex = 0; SVG und PNG schreiben die gewählte nullbasierte Seite

Snapshot-Serialisierung und natives Rendering schließen in privaten begrenzten Puffern ab, bevor in den Zielstream kopiert wird; Validierungs- oder Renderfehler erhalten ihn, aber ein Schreibfehler des Aufrufer-Streams kann partielle Bytes hinterlassen und folgt dem eigenen Fehlerverhalten dieses Streams

Save(FileName, Format) schreibt eine PDF-Datei oder eine SVG/PNG-Datei pro Seite und liefert deren Pfade; mehrseitige Dateinamen fügen -0001, -0002 und weitere Suffixe vor der Erweiterung ein

Vorhandene Datei- oder Verzeichnisziele weisen zurück; jeder Speichervorgang stagt alle Seiten, veröffentlicht exklusive neue Ziele und entfernt seine eigenen gestagten/veröffentlichten Ausgaben bei Fehlschlag

Das Dateisystem muss die nativen exklusiven Staging- und Link-Veröffentlichungsoperationen unterstützen; separate PDF-, SVG- und PNG-Speichervorgänge sind separate Operationen und bilden keine kombinierte Transaktion

Eigenständiger Linux-Consumer

Tests/Portable/RenderPortableSnapshot.pas ist ein vollständiger Consumer, der einen Snapshot lädt, ein Layout vorbereitet und alle drei Formate speichert; bauen Sie ihn unter Linux mit den portablen Units und nativen Bibliotheken

fpc -Mdelphiunicode -Fu/path/to/HotXLS/Lib RenderPortableSnapshot.pas
./RenderPortableSnapshot report.hxrs /srv/output/report fonts.tsv 595 842 96

fonts.tsv ist UTF-8-Text mit vier tabgetrennten Feldern pro Zuordnung: Familienalias, absoluter Linux-Schriftpfad, Face-Index und einer der Werte regular, bold, italic oder bolditalic

Calibri	/srv/fonts/Regular.ttf	0	regular
Calibri	/srv/fonts/Bold.ttf	0	bold
Calibri	/srv/fonts/Italic.ttf	0	italic
Calibri	/srv/fonts/BoldItalic.ttf	0	bolditalic

Verwenden Sie tatsächlich installierte oder anwendungsgelieferte Schriftdateien, und wählen Sie eine neue Ausgabebasis, weil vorhandene Zieldateien zurückgewiesen werden; nehmen Sie zusätzliche gleichstilige Fallbacks für Skripte auf, die die erste Zuordnung nicht abdeckt

Stream := TFileStream.Create('report.hxrs', fmOpenRead or fmShareDenyWrite);
try
  Snapshot := LoadXLSPortableRenderSnapshot(Stream,
    XLSDefaultPortableRenderLimits);
finally
  Stream.Free;
end;
Options := XLSDefaultPortableCairoOptions;
Layout := PrepareXLSPortableCairoLayout(Snapshot, Fonts, Options);
try
  Files := Layout.Save('/srv/output/report.pdf', xpcfPDF);
  Files := Layout.Save('/srv/output/report.svg', xpcfSVG);
  Files := Layout.Save('/srv/output/report.png', xpcfPNG);
finally
  Layout.Free;
end;

Gecachte Diagrammaufzeichnung

XLSRecordCachedChartScene in lxPagination zeichnet die punktbezogenen Primitive des bestehenden Diagrammlayout-Renderers in eine unveränderliche portable Szenenrepräsentation auf; seine Quelle muss ein abgekoppelter TXLSXChart ohne besitzendes Arbeitsblatt und ohne erhaltenes natives XML sein, sodass Aufzeichnung keine Arbeitsblattreferenzen auflösen oder Arbeitsmappen-Caches auffrischen kann

Das aktuelle Subset unterstützt Säulen-, Balken-, Linien-, Streu-, Kreis-, Ring- und gewöhnliche Einserien-Flächendiagramme mit einer primären Plotgruppe, endlichen numerischen Wertcaches und strikt aufsteigenden begrenzten Cache-Indizes; Streu-Kategoriecaches enthalten numerische X-Koordinaten, während die anderen Familien gespeicherte Kategorienbeschriftungen nutzen

Säulen-, Balken-, Linien- und Flächenwertcaches müssen zusammenhängende nullbasierte Indizes haben; sparse Kategoriewertlücken weisen zurück, und Aufzeichnung expandiert fehlende Indizes nie in ein großes Array

Balkenplots behalten horizontale Geometrie und kategoriale Beschriftungen; Kreis- und Ringplots nutzen Kategorielegenden, beachten FirstSliceAng und HoleSize und lassen numerische Achsen weg, während gewöhnliche Einserien-Flächenplots ein gefülltes Polygon um die null-Baseline behalten

Linien- und Streuserien unterstützen unabhängige Liniensichtbarkeit, explizite RGB-Farbe und Punktbreite über LineVisible, LineColorRGB und LineWidthPoints; LineStyleSet, LineColorSet und LineWidthSet unterscheiden explizite Einstellungen von geerbten Defaults, und EffectiveLineVisible löst die bestehende Nur-Füllung-Serienkonvention auf

Marker unterstützen den automatischen Kreis, einen expliziten Kreis oder keinen Marker; eine explizite MarkerSize von 2 bis 72 setzt seinen Punktdurchmesser, und MarkerFillSet sowie MarkerBorderSet unterscheiden einen expliziten schwarzen RGB-Wert von null von automatischer Farbwahl; verbindende Segmente werden vor opaken Datenmarkern gemalt

Explizite Markerrahmen ohne gespeicherte Breite nutzen die gewöhnliche 0,75-Punkt-Linie, während Legendensamples den Kreisdurchmesser auf 6 Punkte begrenzen; angeforderte Titelschriften werden auf dem tatsächlichen Rich-Text-Run sowie dessen Standardtext-Properties geschrieben und behalten so sichtbare Größe, Farbe und Betonung, wenn Excel das Diagramm exportiert

Nicht unterstützte Diagrammfamilien, gestapelte oder Mehrserien-Flächenplots, Mehrserien-Kreiselplots, Galerie-Stile, abgerundete Ecken, sekundäre oder kombinierte Plotgruppen, Datumachsen, eigene Zahlenformate, logarithmische Achsen, eigenes Schnittverhalten, rotierter Text, Trendlinien, Fehlerbalken, hierarchische Kategorien, Datenbeschriftungen, andere Markerformen und fehlende Wertcaches lösen EXLSPortableRender vor dem Rendering aus

Eigene Wertachsen-Tick-Schriften, Nebengitternetze, explizite Haupt-/Nebeneinheiten, ungültige explizite Serienfarben und nicht unterstützte Achsenpositionen weisen zurück; Balkenlegenden verlangen derzeit die gewöhnliche rechte Platzierung, und Kreisplots verlangen eine endliche, nicht null Gesamtcachesumme und begrenzte Geometrie mit früher konservativer Reservierung für Bogen-Scratch-Speicher

Das zurückgegebene Array behält primitive Zeichnungsreihenfolge, explizite Farben, Schriften, Textausrichtung, Opazität und Diagramm-Beschneidungsgrenzen; Item-, Byte- und Textabrechnung umfasst konservative Renderer-Scratch-Reservierungen, und kooperative Cache-Prüfungen gehen der Scratch-Array-Allokation voraus

XLSValidateCachedChartSceneModel führt denselben begrenzten Cache- und Erscheinungsbild-Preflight an einem Modell durch, ohne Arbeitsblattzellen aufzulösen; die XLSX-Capture-Bridge nutzt diese Prüfung vor dem Klonen und zeichnet unterstützte verfasste Diagrammmodelle mit lokalen eindimensionalen A1-Referenzen, physischen nativen Anker-Offsets, Bereichsbeschneidung und Zeichnungsreihenfolge auf

Der plattformneutrale Rekorder lebt in lxPortableChart; die bestehenden lxPagination-Einstiegspunkte teilen sich dieselben Layout- und Primitive-Aufzeichnungskörper und behalten das Verhalten des Windows-Renderers sowie passende unveränderliche Szenen-Bytes und Budgetabrechnung für jede unterstützte Familie

Natives Linux- und macOS-Arbeitsmappen-Capture nutzt die nachfolgend beschriebene explizite Geometrieüberladung; importierte Serien-RGB-Füllung, Plotflächen-Hintergrund, Diagrammhintergrund und Diagrammrahmen werden aus ihren eigenen namespace-aufgelösten Shape-Properties wiederhergestellt, sodass eine verschachtelte Serienfarbe den Plotflächen-Hintergrund nicht überschreiben kann

Importiertes erhaltenes ChartML wird nur akzeptiert, wenn sein namespace-expandierter Element-, Attribut- und signifikanter-Text-Stream der unterstützten typisierten Rekonstruktion entspricht; Namespace-Aliase und Attributreihenfolge normalisieren, während nicht modellierte native Erweiterungen, fremde Attribute und nicht unterstütztes Erscheinungsbild konservativ zurückweisen

Rohe XML- und Rekonstruktions-Scratch-Budgets werden vor Klon- und Projektionsarbeit geprüft; nur die abgekoppelte Kopie leert ihr validiertes erhaltenes XML, und die Quelle behält native Metadaten, Zellspeicher, Cache-Inhalte und Generation

Capture durchläuft die zugrunde liegende OfficeArt-Zeichnungsreihenfolge, einschließlich Diagrammrahmen, die im öffentlichen Shapes-Wrapper fehlen, und weist einen schneidenden nicht unterstützten Rahmen zurück, statt ihn stillschweigend wegzulassen

Classic-Cachediagramme mit deklariertem Erscheinungsbild

Classic-BIFF8-Capture unterstützt die sieben obigen gewöhnlichen Diagrammfamilien, wenn ihre Kern-Records, lokalen gespeicherten Werte, expliziten linearen Skalen und ihr Erscheinungsbild abbildbar sind; es liest behaltene Records und verfügbare Formel-Caches, ohne Formeln auszuwerten, sparse Speicher zu expandieren oder kompilierte Formelbäume zu klonen

Verwenden Sie TXLSWorkbook.CreateReadOnlyViewWithChartAppearance(Source, Limits, Geometry), um eine separate Nur-Lese-View mit einem eingefrorenen Satz von TXLSClassicChartAppearanceDeclaration-Werten zu erzeugen, geliefert von IXLSClassicChartAppearanceSource; Geometry ist unter Windows optional und liefert explizite native Schriftmessungen unter Linux oder macOS

TXLSClassicChartAppearanceDeclarations ist das dynamische Array aus primitiven Deklarationen, das eine Anwendung zur Implementierung dieser Quelle nutzen darf

Übergeben Sie diese konfigurierte View an CaptureXLSPortableViewRenderSnapshot(View, SheetIndex, Row1, Col1, Row2, Col2, Limits); Koordinaten sind 1-basiert, und der Adapter stellt das aktive Arbeitsblatt des Aufrufers wieder her, wenn das Capture endet oder zurückweist

Die gewöhnlichen Capture-Einstiegspunkte weisen weiterhin unaufgelöste effektive Classic-Layout- oder Legendenschriften zurück; der separate View-Einstiegspunkt nutzt die bereits eingefrorenen Deklarationen und den Geometrie-Provider

DeklarationsmemberKontrakt
Generation, SheetIndex, ObjectIdDie festgelegte Arbeitsmappen-Generation, der 1-basierte Arbeitsblattindex und die tatsächliche gespeicherte Diagrammobjektidentität; veraltete Generationen, fehlende oder wiederholte Identitäten und Identitäten eines anderen Objekts weisen zurück
HasChartSize, ChartWidthPoints, ChartHeightPointsEine explizite endliche positive Diagrammrahmengröße in Punkten; sie behält den gespeicherten Ankerursprung und die Zeichnungsreihenfolge, während ein false-Flag die ankerabgeleiteten Abmessungen behält
HasPlotInnerRectangle, PlotInnerRectangleEin explizites inneres Plotrechteck ohne Beschriftungen und Achsentitel; es ist für diesen deklarierten Erscheinungsbild-Pfad erforderlich
HasTitleRectangle, TitleRectangleEin explizites Titelrechteck, wenn das Diagramm einen Titel hat; Quelltext, Schriftfamilie, Betonung und Farbe kommen weiterhin aus validierten Kern-Records
HasLegendRectangle, LegendRectangleDie deklarierten Legendengrenzen, wenn eine Legende vorhanden ist
HasLegendFontSize, LegendFontSizePointsDie explizite effektive Punktgröße des Aufrufers für eine vorhandene Legende; Kernschriftfamilie, Betonung und Farbe bleiben erhalten
TXLSPortableChartRectangleLeft, Top, Width und Height sind endliche Punkte relativ zum erfassten Diagrammrahmen; aktive Rechtecke erfordern positive Abmessungen innerhalb dieses Rahmens
Count, GetCount, ReadDeclarationDie Quelle meldet eine begrenzte Anzahl und liefert einen primitiven Record pro nullbasiertem Index, solange die View konfiguriert ist; Deklarationen werden vor späterem Capture kopiert

Diese Werte sind aufruferdeklariertes Erscheinungsbild, kein automatisches Excel-Layout oder abgeleitete Schriftskalierung; beziehen Sie sie aus einer unabhängig geprüften Quelle oder einem anwendungsdefinierten Layout und prüfen Sie die Ausgabe mit der expliziten nativen Schriftzuordnung, die für das Rendering genutzt wird

Explizite Rahmendimensionen und innere Plotgrenzen müssen genug Raum für die validierten Achsenbeschriftungsschriften lassen; unzureichender Beschriftungsraum weist zurück, statt Text zu beschneiden oder einen angepassten Skalierungsfaktor anzuwenden

Anwendungen halten den Arbeitsmappen-Besitzer am Leben, bis die View freigegeben wird; die geliehene View hält eine Lese-Lease und behält die Deklarationsquelle, während der entstehende unveränderliche Snapshot weder die Arbeitsmappe noch den Provider behält

Unterstützte Kernprojektion umfasst literale Volltonfüllungen, sichtbare Volltonlinien, Kreismarker, Titel- und Legendentext, Kategorieplatzierung und begrenzte explizite numerische Ticks; automatische Skalen, unaufgelöste automatische Markererscheinung, Glättung, unbekannte Rich-Erweiterungen, fremde oder nichtlineare Serienreferenzen und nicht abgebildete Punktstile weisen vor der Ausgabe zurück

Deklarierte Geometrie oder eine Legendengröße autorisiert nicht, unbekannte Diagrammerweiterungen oder unvalidierte Stile zu ignorieren; Byte-, Text-, gespeicherte-Zellen- und Szenenlimits bleiben für behaltene Quelldaten, Deklarationen, abgekoppelte Caches und Aufzeichnungs-Scratch-Speicher wirksam

Die zusätzlichen XLSValidateCachedChartSceneModel- und XLSRecordCachedChartScene-Überladungen akzeptieren TXLSCachedChartSceneAppearance für ein abgekoppeltes Modell; initialisieren Sie es mit XLSDefaultCachedChartSceneAppearance, bevor Sie explizite Steuerungen setzen

Der niedrigere XLSReadClassicChartScene in lxClassicChartScene liefert einen aufruferbesessenen abgekoppelten TXLSXChart sowie primitives Erscheinungsbild- und Budgetzähler aus einem behaltenen TXLSCustomChart, seinem exakten Quellcalculator und einer geleaste TXLSClassicChartSceneSource; geben Sie das zurückgegebene Modell nach der Aufzeichnung frei

TXLSClassicChartSceneSource.ReadAppearance liefert eine primitive Deklaration, ReadCell liest begrenzte festgelegte lokale gespeicherte Werte, ReadFont füllt den gelieferten Textstil mit begrenzten effektiven Kernschriftdaten, und PaletteColor löst explizite gespeicherte Paletteneinträge auf; Anwendungsimplementierungen müssen die festgelegte Quelle bewahren und jede gelieferte Byte- und Zeichenquote einhalten

Szenen-Erscheinungsbild-MemberBedeutung
SeriesMarkerSizePointsBegrenzte Serien-Punktdurchmesser, einschließlich Fraktionalwerten; null behält die Markergröße des Modells, und ein Nicht-null-Override muss zwischen 2 und 72 Punkten liegen
OverrideBorder, BorderColorRGB, BorderWidthPointsExplizites Diagrammrahmen-Umrisserscheinungsbild
AxisColorRGB, TickColorRGB, GridlineColorRGB, AxisWidthPoints, TickWidthPoints, GridlineWidthPointsExplizite Achsen-, Tick- und Hauptgitternetz-Farben und Punktbreiten
AreaFillOpacity, SeriesFillAlphaFlächenopazität und Serienfüll-Alpha
UseAxisTickControls, CategoryBetweenValidierte explizite Achsensteuerungen und kategoriale Platzierung
TitleOffsetXPoints, TitleOffsetYPointsEndliche Offsets, angewendet auf die gewöhnliche Titelposition des Rekorders
OverridePlotInnerRectangle, OverrideTitleRectangle, OverrideLegendRectangle, PlotInnerRectangle, TitleRectangle, LegendRectangleLiteral Punkt-Rechtecke relativ zum Diagrammrahmen
PieRadiusRatioKreisplot-Radius als begrenzter Anteil der kleineren Plotdimension

Diagrammprimitive folgen der bestehenden Layoutrichtlinie von HotXLS; Diagrammgalerie-Erscheinungsbild, das Excels nicht modellierte Defaults erfordert, bleibt eine explizite nicht unterstützte Grenze

Direktes natives Arbeitsmappen-Capture

CreateXLSPortableCairoRenderGeometry(Fonts, Calibration, Generation, Backend, Options, CacheCapacity) liefert ein IXLSRenderGeometry, das auf denselben expliziten Schriftdateien, FreeType, HarfBuzz und Textshaping basiert wie die native Ausgabe; Spaltenbreiten nutzen die tatsächlich gemessene maximale Ziffernbreite mit der Arbeitsmappen-Kalibrierung

Der Provider besitzt abgekoppelte Schrift-Bytes und einen begrenzten Metrik-Cache, prüft Schrift- und Layoutbudgets vor der Allokation und validiert Messanfragen, bevor er den Cache-Zustand ändert; ein voller Cache kann ungecachte Messungen liefern, ohne über seine Kapazität hinaus zu wachsen

Capture verifiziert, dass die Provider-Generation und alle Kalibrierfelder zur aktuellen Nur-Lese-Arbeitsmappenview passen, behält den Provider für diese View und lässt die Standard-Geometrie-Factory der Arbeitsmappe unverändert; gewöhnliche Standard-native-Geometrie bleibt eine explizite GDI-Grenze

Erfassen Sie die Generation über eine explizit freigegebene View, bevor Sie den Provider erzeugen; das Zurückhalten eines temporären Interface-Ergebnisses kann seine Lese-Lease behalten, bis der umgebende Scope endet

View := Owner.CreateReadOnlyView;
Generation := View.Generation;
View := nil;
Geometry := CreateXLSPortableCairoRenderGeometry(Fonts,
  Workbook.CaptureRenderCalibration, Generation, xlsrgbBitmap,
  XLSDefaultPortableCairoOptions, 4096);
Snapshot := CaptureXLSPortableRenderSnapshot(Owner, 1, 1, 1, 30, 6,
  XLSDefaultPortableRenderLimits, Geometry);

Native Consumer kompilieren mit LX_PORTABLE_CORE und den entsprechenden nativen Abhängigkeiten; Windows-Aufrufe der nativen Cairo-Geometrie-Factory weisen explizit zurück, während Windows-Capture seine bestehende Geometrie-Factory über dieselben Scoped-Überladungen nutzen kann

Tatsächliches natives Capture unterstützt die oben beschriebenen modellierten Skalare, Rich Text, unterstützte Raster, gewöhnliche Formen und die sieben Cachediagramm-Familien; Diagramm-Capture bewahrt das ursprüngliche importierte ChartML, gecachte Punkte, sparse Zellspeicher, gepackte Speicherung und die Arbeitsmappen-Generation

Für unveränderliche Druckbereiche, Margen, Anpassungs- oder Prozentskalierung, wiederholte Titel, manuelle Umbrüche und Ganz-Zellen- oder verbundene-Zellen-Paginierung siehe Portable Druckpläne

Erweiterte Capture-Bridge

IXLSRenderCaptureSource in lxSemanticSnapshot ist die interne Koordinationsschnittstelle, die von unterstützten Nur-Lese-Arbeitsmappenviews implementiert wird; gewöhnliche Anwendungen sollten die besitzerbasierten Capture-Überladungen aufrufen

TXLSClassicReadOnlyWorkbookView und TXLSXReadOnlyWorkbookView implementieren IXLSRenderCaptureSource, einschließlich der acht nachfolgenden Render-Methoden; diese Klassen koordinieren Capture über Nur-Lese-Views, und der Adapter verwaltet ihre Lebensdauer, während Anwendungen ihre Arbeitsmappen-Besitzer-Interface behalten und CaptureXLSPortableRenderSnapshot aufrufen

Ihre bestehende TryReadCell-Methode liefert einen gespeicherten Zellen-Snapshot über die Nur-Lese-View; die Render-Methoden ergänzen abgekoppeltes Erscheinungsbild und Geometrie für portables Capture

Member oder HelperZweck
ValidateRenderRangePrüft 1-basierte Rechteckgrenzen und nicht unterstützte Erscheinungsbild-Footprints vor dem Capture
ReadRenderStyleLiefert abgekoppelte TXLSSemanticCellStyle-Metadaten und ein Rich-Text-Vorhandenheits-Flag für eine 1-basierte Zelle
IXLSRenderRichTextCaptureSource, ReadRenderRichTextOptionale View-Erweiterung, die begrenzte abgekoppelte TXLSRenderTextRuns liefert; jeder TXLSRenderTextRun enthält Text und einen effektiven semantischen Style und nutzt den gelieferten Basisstil sowie positive Run-/Byte-Quoten, ohne Zellen zu materialisieren oder Stil-Pools zu ändern
RenderRowHeightPoints, RenderColumnWidthPointsLiefern physische Geometrie und verdichten versteckte Dimensionen zu null
IXLSRenderGeometryCaptureSource, SetRenderCaptureGeometryOptionale View-Erweiterung, die einen expliziten Provider erst nach Generierungs- und Kalibriervalidierung behält; ungültige Provider lassen den behaltenen View-Provider unverändert
ReadRenderMergeMeldet das vollständige inklusive 1-basierte Verbundrechteck, das eine Zelle enthält
ResolveRenderColorLöst semantische Themen-/indizierte/RGB-Erscheinungsbilder in eine portable RGB-Farbe auf und nutzt dabei wo unterstützt den gelieferten Default
RenderDate1904, RenderRightToLeftLegen Arbeitsmappen-Datumssystem- und Blattleserichtungs-Kontext offen
XLSRenderCaptureLiteralErkennt das unterstützte literale Boolean-, endliche Zahlen- oder einfache gequotete Text-Subset für Capture ohne Auswertung
XLSRenderCaptureIntersectsPrüft leerraumgetrennte lokale A1-Bereiche gegen ein 1-basiertes Rechteck und weist unaufgelöste Bereichssyntax zurück
XLSRenderCaptureConditionWertet das unterstützte Bedingungs-Subset gegen einen vorhandenen Skalar aus; Vergleichsoperator-Codes 1 bis 8 bedeuten zwischen, nicht-zwischen, gleich, nicht-gleich, größer, kleiner, größer-oder-gleich und kleiner-oder-gleich
XLSRenderCaptureApplyDxfWendet unterstütztes abgekoppeltes Differentialerscheinungsbild mit einer AppliedSlots-Maske an und behält dabei höherpriore Formatierung
TXLSDxfStyle._MarkRenderUnsupportedAppearance, TXLSDxfStyle._HasRenderUnsupportedAppearanceInterne, präfixierte Import-Koordinationsmethoden zeichnen Erscheinungsbild auf und inspizieren es, das das typisierte Differentialmodell nicht sicher rendern kann; Assign behält die Markierung, und Capture weist einen markierten passenden Stil zurück

Diese Bridge-Helper können EXLSSemanticSnapshot auslösen; der öffentliche Capture-Adapter übersetzt diese Exception nach EXLSPortableRender