HotXLS dokumentáció

Közvetlen olvasó és író API

TXLSDirectReader és TXLSDirectWriter XLSX-csomagokat dolgoz fel anélkül, hogy a teljes munkalaprácsot a memóriában tartaná, ezért a lapot leíró API-hívásokat a megfelelő streamelési fázis előtt vagy közben kell elvégezni

Író életciklusa és cellaértékek

TXLSDirectWriter.BeginFile vagy BeginStream elindít egy csomagot, a lapmetódusok egyszerre egy munkalapot definiálnak, a Finish pedig rögzíti a végső csomagot

Skaláris cellákWriteString, WriteRichString, WriteNumber, WriteBoolean, WriteDateTime és WriteError
KépletcellákWriteFormula, WriteFormulaNumber, WriteFormulaString, WriteFormulaBoolean, WriteFormulaDateTime és WriteFormulaError a hívó által szolgáltatott gyorsítótárazott eredményeket fogadják el
Megosztott karakterláncokUseSharedStrings lehetővé teszi a csomagszintű karakterlánc-deduplikálást
StatisztikákCellCount a kiadott cellák számát jelenti
AblaktáblákA FreezePanes(ColSplit, RowSplit) rögzített osztást ír ki a megadott egyalapú oszlopnál és sornál

A sorok és oszlopok az egytől kezdődő számozást használják a nyilvános író felületén, és előrehaladó munkalap-sorrendben kell őket megadni

Újrahasznosítható stílusok

AddCellStyle egy megváltoztathatatlan (immutable) csomagszintű stílusazonosítót regisztrál, a CloneCellStyle pedig új azonosítót származtat anélkül, hogy munkalapsorokat tartana meg

Definiált nevek és hiperhivatkozások

AddDefinedName, AddLocalDefinedName, AddDefinedRange és AddLocalDefinedRange munkafüzet- vagy lapszintű neveket adnak hozzá a csomag véglegesítése előtt

AddHyperlink, AddHyperlinkRange, AddInternalHyperlink és AddInternalHyperlinkRange külső kapcsolatokat vagy belső laphelyeket bocsátanak ki egy cellához vagy tartományhoz

Adatérvényesítés

AddDataValidation és AddDataValidationSqRef a teljes szabályfelületet teszik elérhetővé, míg az AddListValidation, AddWholeNumberValidation, AddDecimalValidation, AddDateValidation, AddTimeValidation, AddTextLengthValidation és AddCustomValidation típusos segédfüggvényeket biztosítanak

Feltételes formázás

AddConditionalFormat, AddConditionalFormatExpression, AddConditionalFormatContainsText, AddConditionalFormatNotContainsText, AddConditionalFormatBeginsWith, AddConditionalFormatEndsWith, AddConditionalFormatTop10, AddConditionalFormatAboveAverage, AddConditionalFormatDuplicateValues, AddConditionalFormatUniqueValues, AddConditionalFormatContainsBlanks, AddConditionalFormatNotContainsBlanks, AddConditionalFormatContainsErrors és AddConditionalFormatNotContainsErrors skaláris szabályokat adnak hozzá

AddConditionalFormatDataBar, AddConditionalFormatColorScale2, AddConditionalFormatColorScale3 és AddConditionalFormatIconSet vizuális szabályokat adnak hozzá; a ClearConditionalFormats eltávolítja az aktuális lap függőben lévő szabályait

AutoFilter és táblázatok

AddAutoFilterValue, AddAutoFilterDateGroup és AddAutoFilterSortCondition konfigurálják a munkalapszűrőt

AddTable táblarészt hoz létre, az AddTableFilterValue, AddTableFilterDateGroup és AddTableSortCondition pedig annak szűrő- és rendezési állapotát konfigurálják

Védelem és oldaltörések

ProtectSheet, UnprotectSheet, AddProtectedRange és ClearProtectedRanges a munkalapvédelmet konfigurálják; a ProtectWorkbook és UnprotectWorkbook a munkafüzet-struktúra és az ablakzárak védelmét konfigurálják

AddHorizontalPageBreak és AddVerticalPageBreak kézi oldaltöréseket bocsátanak ki az aktuális munkalaphoz

Közvetlen olvasó tárolási diagnosztikája

TXLSDirectReader.SharedStringMemoryLimit korlátozza a dekódolt megosztott karakterlánc-memóriát, a SharedStringsOnDisk az ideiglenes indexelt tárhelyre történő áttelepítést jelenti, a SharedStringCount a betöltött bejegyzések számát jelenti, a ParallelDiag pedig a korlátozott párhuzamos elemző diagnosztikát teszi elérhetővé

Olvasó vetülete és képletállapota

A FirstRow, a LastRow, az IncludeColumn és a ClearColumnProjection a sor- és az egyalapú oszlopkijelölést már a munkalap-elemzőbe tolja, még az érték-, képlet- vagy formázott szöveg allokálása előtt

Az IncludeFormulaText alapértelmezése true; ha letiltja, a gyorsítótárazott értékek, koordináták, stílusok és a HasFormula megmaradnak, a FormulaTextAvailable false lesz, a Formula pedig üres marad

Sorkurzor

A TXLSRowCursor.Open XLS, XLSX, XLSM, ODS, CSV és TSV fájlokat vagy adatfolyamokat fogad; a ZIP automatikus felismerés már munkalap megnyitása előtt megkülönbözteti az ODS csomagokat az Open XML munkafüzetektől

A SelectSheet és a SelectSheetByName munkalapot választ; a SheetCount, SheetNames, SheetIndex, RowIndex és Eof a bejárási állapotot teszik elérhetővé, míg a SharedStringMemoryLimit ugyanazt a korlátozott megosztott karakterlánc-szabályzatot alkalmazza, mint a közvetlen olvasó

A FirstRow, a LastRow, az IncludeColumn és a ClearColumnProjection ugyanazokat az egytől kezdődő szűrőket használja az összes kurzorformátumban; az átadott beállítások nem változhatnak a FindFirst és az EOF között, de EOF, munkalapválasztás vagy lezárás után újra módosíthatókká válnak

Minden TXLSRowCursorCell a HasFormula értéket függetlenül jelenti a FormulaTextAvailable-től; a klasszikus XLS a képlet jelenlétét és a gyorsítótárazott eredményeket a nem elérhető token szöveg igénylése nélkül közli, az IncludeFormulaText pedig a felhalmozás előtt elnyomhatja az XLSX és ODS képletszöveget

Az ODS bejárás egyetlen fizikai sortemplimot tart, az ismétlődő sorblokkokat a kért intervallumra vágja, az ismétlődő szakaszokon belül közvetlenül a kiválasztott oszlopok közé ugrik, a lefedett cellákon érték visszaadása nélkül halad át, az érvénytelen vagy rács által korlátozott ismétlésszámokat pedig az OnSkippedRecord révén jelenti

A State megkülönbözteti az xrcsClosed, xrcsBeforeFirst, xrcsActive, xrcsEof, xrcsCancelled és xrcsFaulted állapotokat; a Cancel idempotens, érvényteleníti az aktuális sort, és felszabadítja az aktív munkalap-adatfolyamot a forrás megtartása mellett, így egy explicit munkalapválasztás új átmenetet indíthat

Az adatfolyam-túlterhelés alapértelmezése xsoBorrowed, lezáráskor visszaállítja a hívó kezdeti pozícióját, és sikeres megnyitás után elfogadja az xsoOwned értéket a tulajdonjog átruházására; a sikertelen megnyitás soha nem fogyasztja el a hívó tulajdonjogát

A CurrentRowView másolás nélkül kölcsönzi az aktuális sortömböt, és minden hozzáférés előtt generációellenőrzést végez; a kurzor előreléptetése, kiválasztása, megszakítása, lezárása vagy megsemmisítése érvényteleníti a nézetet, és a későbbi hozzáférésnél EXLSRowCursorViewInvalidated kivételt vált ki

A PeakRowBufferedBytes a legutóbbi Open óta monotón növekvő becslés az egy logikai sorhoz megtartott cellarekordokról, kezelt hasznos terhekről, formázott szövegről és formátum-háttérrendszeri adatokról; korlátos memóriájú visszacsatolási diagnosztikára szolgál, nem pontos heap-mérlegelésre

A SheetPassesStarted a sikeres munkalap-háttérrendszer-indításokat számolja; a munkalapnevek megvizsgálása vagy egy munkalap kihagyása a visszahívási felületen keresztül nem nyitja meg a munkalaprészt

Továbbító visszahívás-adapter

A TXLSForwardReader az XLS, XLSX, ODS, CSV és TSV dekódolást a TXLSRowCursor-ra bízza, az aktuális sor minden celláját OnCell visszahívássá alakítja, és megőrzi ugyanazokat a sorhatár-, oszlopvetület-, képletállapot-, formázott szöveg-, jelszó-, kihagyott rekord-, streampozíció- és korlátos puffer szerződéseket

A PeakRowBufferedBytes és a SheetPassesStarted a közös kurzordiagnosztikát teszi elérhetővé a visszahívási felületen, a klasszikus XLS emellett megőrzi a ClassicBytesRead és a ClassicPeakBufferedBytes értékeket

Az olvasó eseményei és rekordtípusai

Az olvasó és a sorkurzor opcionális visszahívásokat és egyszerű rekordokat tesz elérhetővé, valamennyit a lxDirectRead deklarálja. Minden visszahívás azonos formát követ: a rekord egyetlen streamelt elemet ír le, az Abort beállítása pedig leállítja a beolvasást (a munkalap-események emellett elfogadják a SkipSheet értéket)

CellákAz OnCell (típusa TXLSDirectCellEvent) cellánként egy TXLSDirectCell rekordot ad át, amelynek Kind mezője (típusa TXLSDirectCellKind: xdkEmpty, xdkNumber, xdkString, xdkBoolean, xdkDate, xdkError) választja ki a kitöltött értékmezőt; a formázott szöveg TXLSDirectRichText-ként közlekedik, amely TXLSDirectRichTextRun bejegyzéseket tartalmaz, mindegyik TXLSDirectRichColor színnel (típusa TXLSDirectRichColorKind), TXLSDirectRichUnderline aláhúzással és TXLSDirectRichVertAlign függőleges igazítással, valamint opcionális TXLSDirectPhoneticProperties és TXLSDirectPhoneticRun adatokkal
Munkalap keretezéseAz OnSheet (TXLSDirectSheetEvent) a cellák elemzése előtt kihagyhat egy teljes munkalapot; az OnSkippedRecord (TXLSDirectSkippedEvent) hibás vagy csonka tartalmat jelent a rekordazonosítóval és az okkal együtt
Munkalap elrendezéseAz OnDimension, OnSheetFormat, OnColumn, OnRow, OnMerge és OnPane TXLSDirectDimension, TXLSDirectSheetFormat, TXLSDirectColumn, TXLSDirectRow, TXLSDirectMerge és TXLSDirectPane rekordokat továbbít; az ablaktábla állapota a TXLSDirectPaneState típust használja (xdpsSplit, xdpsFrozen, xdpsFrozenSplit, xdpsUnknown)
Kurzor állapotaA TXLSRowCursor.State egy TXLSRowCursorState típusú érték (xrcsClosed, xrcsBeforeFirst, xrcsActive, xrcsEof, xrcsCancelled, xrcsFaulted); az Open stream-túlterhelése egy TXLSStreamOwnership értéket vesz át (alapértelmezése xsoBorrowed, a tulajdonlás átruházásához xsoOwned), a CurrentRowView pedig egy kölcsönzött IXLSRowCursorView nézetet ad vissza, amelynek Valid tulajdonsága védi a hozzáférést, a ValueByCol pedig másolás nélkül olvas egy cellát a kölcsönzött sorból; a nézet érvénytelenné válik, amikor a kurzor továbblép

Az író paraméter- és stílustípusai

Az író típusos segédei (lxDirectWrite) rekordokat és felsorolásokat fogadnak, így a hívások allokációmentesek maradnak: a WriteRichString egy TXLSDirectRichText rekordot kap; az AddCellStyle csomagszintű stílust épít egy TXLSDirectCellStyle rekordból, amelynek igazítása (TXLSDirectHorizontalAlignment, TXLSDirectVerticalAlignment), aláhúzása (TXLSDirectUnderline), kitöltési mintája (TXLSDirectFillPattern) és keretoldalai (TXLSDirectStyleBorder, mellette TXLSDirectBorderSide) tükrözik az OOXML stílusmodelljét. A feltételes formátumok egy TXLSDirectConditionalFormat rekordot adnak át TXLSDirectCfKind / TXLSDirectCfOperator / TXLSDirectCfValue / TXLSDirectCfValueKind és TXLSDirectIconSetType típusokkal, az adatérvényesítés egy TXLSDirectDataValidation rekordot, a táblázatok egy TXLSDirectTable rekordot, a hiperhivatkozások egy TXLSDirectHyperlink rekordot, a definiált nevek egy TXLSDirectDefinedName rekordot, a differenciális stílusok egy TXLSDirectDxfStyle rekordot, a megjegyzések egy TXLSDirectComment rekordot, a képek egy TXLSDirectImage rekordot TXLSDirectImageFormat formátummal, a diagramok egy TXLSDirectChart rekordot TXLSDirectChartSeries sorozatokkal és TXLSDirectChartType típussal, az egyesítések egy TXLSDirectMergeRange rekordot, a védett tartományok egy TXLSDirectProtectedRange rekordot, a munkalapvédelem egy TXLSDirectSheetProtectionOptions halmazt, amely a TXLSDirectSheetProtectionOption elemekből áll, az automatikus szűrő rendezési állapota egy TXLSDirectSortState rekordot, az oszlopopciók egy TXLSDirectColumnOption rekordot, az oldalgeometria pedig egy TXLSDirectPageMargins rekordot

TXLSDirectNeedRow = procedure(Sender: TObject; RowIndex: Integer;
  var Eof: Boolean) of object;

function XLSDirectColName(Col: Integer): WideString;
function XLSDirectParseRef(const Ref: WideString;
  out Col, Row: Integer): Boolean;
function XLSDirectPasswordHash(const Password: WideString): WideString;
      

Az OnNeedRow az alkalmazástól kéri le a sorokat: a szolgáltató a sor celláit közvetlenül az írón keresztül írja ki, és Eof = False értéken hagyja a jelzőt, vagy Eof = True beállítással jelzi a kimerülést, és leállítja a ciklust. A segédek a koordináták és a védelmi primitívek között konvertálnak: az XLSDirectColName a nullaalapú oszlopot A1 betűivel jeleníti meg, az XLSDirectParseRef egy A1 cellahivatkozást elemez, az XLSDirectPasswordHash pedig a munkalapvédelmi rekordokban tárolt örökölt jelszóhash-t számítja ki

Lásd még