Dokumentacija HotXLS

Izravni API čitača i zapisivača

TXLSDirectReader i TXLSDirectWriter obrađuju XLSX pakete bez zadržavanja cijele mreže radnog lista u memoriji, pa se pozivi API-ja koji opisuju list moraju izvršiti prije ili tijekom odgovarajuće faze strujanja

Životni ciklus zapisivača i vrijednosti ćelija

TXLSDirectWriter.BeginFile ili BeginStream pokreću paket, metode za list definiraju po jedan radni list, a Finish potvrđuje konačni paket

Scalar cellsWriteString, WriteRichString, WriteNumber, WriteBoolean, WriteDateTime, and WriteError
Skalarne ćelijeWriteString, WriteRichString, WriteNumber, WriteBoolean, WriteDateTime i WriteError
Formula ćelijeWriteFormula, WriteFormulaNumber, WriteFormulaString, WriteFormulaBoolean, WriteFormulaDateTime i WriteFormulaError prihvaćaju međuspremljene rezultate koje je dostavio pozivatelj
Zajednički nizoviUseSharedStrings omogućuje deduplikaciju nizova na razini paketa
PanesFreezePanes(ColSplit, RowSplit) zapisuje zamrznuti raspol at danoj koloni i reduku s bazom jedan

Retci i stupci počinju od jedan u javnoj površini zapisivača i moraju se dostavljati naprijed redoslijedom radnog lista

Ponovno upotrebljivi stilovi

AddCellStyle registrira nepromjenjivu ručicu stila na razini paketa, a CloneCellStyle izvodi novu ručicu bez zadržavanja redaka radnog lista

Definirana imena i hiperveze

AddDefinedName, AddLocalDefinedName, AddDefinedRange i AddLocalDefinedRange dodaju imena na razini radne knjige ili lista prije finalizacije paketa

AddHyperlink, AddHyperlinkRange, AddInternalHyperlink i AddInternalHyperlinkRange emitiraju vanjske odnose ili unutarnje lokacije lista za jednu ćeliju ili raspon

Provjera podataka

AddDataValidation i AddDataValidationSqRef izlažu cijelu površinu pravila, dok AddListValidation, AddWholeNumberValidation, AddDecimalValidation, AddDateValidation, AddTimeValidation, AddTextLengthValidation i AddCustomValidation pružaju pomoćne funkcije s tipovima

Uvjetno oblikovanje

AddConditionalFormat, AddConditionalFormatExpression, AddConditionalFormatContainsText, AddConditionalFormatNotContainsText, AddConditionalFormatBeginsWith, AddConditionalFormatEndsWith, AddConditionalFormatTop10, AddConditionalFormatAboveAverage, AddConditionalFormatDuplicateValues, AddConditionalFormatUniqueValues, AddConditionalFormatContainsBlanks, AddConditionalFormatNotContainsBlanks, AddConditionalFormatContainsErrors i AddConditionalFormatNotContainsErrors dodaju skalarna pravila

AddConditionalFormatDataBar, AddConditionalFormatColorScale2, AddConditionalFormatColorScale3 i AddConditionalFormatIconSet dodaju vizualna pravila; ClearConditionalFormats uklanja čekajuća pravila za trenutni list

AutoFilter i tablice

AddAutoFilterValue, AddAutoFilterDateGroup i AddAutoFilterSortCondition konfiguriraju filtar radnog lista

AddTable stvara dio tablice, a AddTableFilterValue, AddTableFilterDateGroup i AddTableSortCondition konfiguriraju njegovo stanje filtra i sortiranja

Zaštita i prijelomi stranica

ProtectSheet, UnprotectSheet, AddProtectedRange i ClearProtectedRanges konfiguriraju zaštitu radnog lista; ProtectWorkbook i UnprotectWorkbook konfiguriraju strukturu radne knjige i zaključavanje prozora

AddHorizontalPageBreak i AddVerticalPageBreak emitiraju ručne prijelome stranica za trenutni radni list

Dijagnostika pohrane izravnog čitača

TXLSDirectReader.SharedStringMemoryLimit ograničava dekodiranu memoriju zajedničkih nizova, SharedStringsOnDisk izvještava o prelasku na privremenu indeksiranu pohranu, SharedStringCount izvještava o broju učitanih unosa, a ParallelDiag izlaže ograničenu dijagnostiku paralelnog raščlanjivanja

Pokazivač redaka

TXLSRowCursor.SelectSheet i SelectSheetByName biraju radni list; SheetCount, SheetNames, SheetIndex, RowIndex i Eof izlažu stanje prolaska, dok SharedStringMemoryLimit primjenjuje istu ograničenu politiku zajedničkih nizova kao izravni čitač

IncludeFormulaText po defaultu je true; njegovo isključivanje čuva predmemorirane vrijednosti, koordinate, stilove i HasFormula, dok FormulaTextAvailable postaje false i Formula ostaje prazna

Pokazivač redaka

TXLSRowCursor.Open prihvaća datoteke ili tokove XLS, XLSX, XLSM, ODS, CSV i TSV; automatska detekcija ZIP-a razlikuje ODS pakete od radnih knjiga Open XML prije otvaranja lista

SelectSheet i SelectSheetByName biraju radni list; SheetCount, SheetNames, SheetIndex, RowIndex i Eof izlažu stanje prolaska, dok SharedStringMemoryLimit primjenjuje istu ograničenu politiku zajedničkih nizova kao izravni čitač

FirstRow, LastRow, IncludeColumn i ClearColumnProjection koriste iste filtre s bazom jedan u svim formatima pokazivača; opcije prolaza ne mogu se mijenjati između FindFirst i EOF, ali postaju promjenjive ponovno nakon EOF, odabira lista ili zatvaranja

Svaki TXLSRowCursorCell izvještava HasFormula neovisno o FormulaTextAvailable; klasični XLS izlaže prisutnost formule i predmemorirane rezultate bez tvrdnji o nedostupnom tekstu tokena, dok IncludeFormulaText može suzbiti tekst formula XLSX-a i ODS-a prije akumulacije

ODS prolaz drži jedan fizički predložak retka, odrezuje ponovljene blokove redaka na traženi interval, skače izravno između odabranih stupaca unutar ponovljenih raspona, napreduje preko pokrivenih ćelija bez vraćanja ih kao vrijednosti i izvještava nevažeće ili mrežom ograničene brojeve ponavljanja kroz OnSkippedRecord

State razlikuje xrcsClosed, xrcsBeforeFirst, xrcsActive, xrcsEof, xrcsCancelled i xrcsFaulted; Cancel je idempotentan, poništava trenutni redak i otpušta tok aktivnog radnog lista uz zadržavanje izvora, tako da izričit odabir lista može pokrenuti novi prolaz

Preopterećenje toka po defaultu je xsoBorrowed, vraća početnu poziciju pozivatelja pri zatvaranju i prihvaća xsoOwned za prijenos vlasništva nakon uspješnog otvaranja; neuspjela otvaranja nikada ne troše vlasništvo pozivatelja

CurrentRowView posuđuje polje trenutnog retka bez kopiranja i provjerava generaciju pri svakom pristupu; napredovanje, odabir, otkazivanje, zatvaranje ili uništavanje pokazivača poništava prikaz i podiže EXLSRowCursorViewInvalidated pri kasnijem pristupu

PeakRowBufferedBytes je monoton procijenjeni podatak od posljednjeg Open-a o zapisima ćelija, upravljanim sadržajima, bogatom tekstu i podacima pozadine formata zadržanima za jedan logički redak; namijenjen je dijagnostici regresije ograničene memorije, a ne točnom računovodstvu hrpe

SheetPassesStarted broji uspješna pokretanja pozadine radnog lista; pregledavanje naziva listova ili preskakanje lista kroz fasadu povratnih poziva ne otvara dio radnog lista

Forward prilagodnik povratnih poziva

TXLSForwardReader delegira dekodiranje XLS, XLSX, ODS, CSV i TSV na TXLSRowCursor, pretvara svaku ćeliju trenutnog retka u povratni poziv OnCell i čuva iste ugovore o granicama redaka, projekciji stupaca, stanju formula, bogatom tekstu, lozinci, preskočenim zapisima, poziciji toka i ograničenom međuspremniku

PeakRowBufferedBytes i SheetPassesStarted izlažu zajedničku dijagnostiku pokazivača na površini povratnih poziva, dok klasični XLS dodatno čuva ClassicBytesRead i ClassicPeakBufferedBytes

Događaji čitača i vrste zapisa

Čitač i pokazivač redaka izlažu neobavezne povratne pozive i obične zapise, sve deklarirano u lxDirectRead. Svaki povratni poziv slijedi isti oblik: zapis opisuje jednu strujanu stavku, a postavljanje Abort zaustavlja skeniranje (događaji listova dodatno prihvaćaju SkipSheet)

CellsOnCell (tip TXLSDirectCellEvent) dostavlja TXLSDirectCell po ćeliji čiji Kind (TXLSDirectCellKind: xdkEmpty, xdkNumber, xdkString, xdkBoolean, xdkDate, xdkError) bira popunjeno polje vrijednosti; bogati tekst putuje kao TXLSDirectRichText s unosima TXLSDirectRichTextRun, svaki s TXLSDirectRichColor (vrsta TXLSDirectRichColorKind), TXLSDirectRichUnderline i TXLSDirectRichVertAlign, plus neobaveznim podacima TXLSDirectPhoneticProperties i TXLSDirectPhoneticRun
Sheet framingOnSheet (TXLSDirectSheetEvent) može preskočiti cijeli radni list prije parsiranja njegovih ćelija; OnSkippedRecord (TXLSDirectSkippedEvent) izvještava o neispravnom ili odrezanom sadržaju s id-em zapisa i razlogom
Sheet layoutOnDimension, OnSheetFormat, OnColumn, OnRow, OnMerge i OnPane dostavljaju zapise TXLSDirectDimension, TXLSDirectSheetFormat, TXLSDirectColumn, TXLSDirectRow, TXLSDirectMerge i TXLSDirectPane; stanje okna koristi TXLSDirectPaneState (xdpsSplit, xdpsFrozen, xdpsFrozenSplit, xdpsUnknown)
Cursor stateTXLSRowCursor.State je TXLSRowCursorState (xrcsClosed, xrcsBeforeFirst, xrcsActive, xrcsEof, xrcsCancelled, xrcsFaulted); preopterećenje toka Open-a prima TXLSStreamOwnership (default xsoBorrowed, xsoOwned za prijenos vlasništva), a CurrentRowView vraća posuđeni prikaz IXLSRowCursorView čije svojstvo Valid čuva pristup i čije ValueByCol čita jednu ćeliju posuđenog retka bez kopiranja; prikaz se poništava kada se pokazivač pomakne

Tipovi parametara i stilova zapisivača

Tipizirani pomoćnici zapisivača (lxDirectWrite) prihvaćaju zapise i nabrajanja kako pozivi ostali bez alokacija: WriteRichString prima TXLSDirectRichText; AddCellStyle gradi stil na razini paketa iz TXLSDirectCellStyle čije poravnanje (TXLSDirectHorizontalAlignment, TXLSDirectVerticalAlignment), podvlaka (TXLSDirectUnderline), uzorak ispune (TXLSDirectFillPattern) i stranice okvira (TXLSDirectStyleBorder s TXLSDirectBorderSide) preslikavaju model stilova OOXML-a. Uvjetni formati prosljeđuju TXLSDirectConditionalFormat s TXLSDirectCfKind / TXLSDirectCfOperator / TXLSDirectCfValue / TXLSDirectCfValueKind i TXLSDirectIconSetType, provjera podataka TXLSDirectDataValidation, tablice TXLSDirectTable, hiperveze TXLSDirectHyperlink, definirana imena TXLSDirectDefinedName, diferencijalni stilovi TXLSDirectDxfStyle, komentari TXLSDirectComment, slike TXLSDirectImage s TXLSDirectImageFormat, grafikoni TXLSDirectChart s TXLSDirectChartSeries i TXLSDirectChartType, spajanja TXLSDirectMergeRange, zaštićeni rasponi TXLSDirectProtectedRange, zaštita lista skup TXLSDirectSheetProtectionOptions od TXLSDirectSheetProtectionOption, stanje sortiranja auto-filtra TXLSDirectSortState, opcije stupca TXLSDirectColumnOption, a geometrija stranice zapis TXLSDirectPageMargins

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;
      

OnNeedRow povlači retke iz aplikacije: dobavljač zapisuje ćelije retka izravno kroz zapisivač i ostavlja Eof = False, ili deklariše iscrpljenost s Eof = True za zaustavljanje petlje. Pomoćnici pretvaraju koordinate i primitiva zaštite: XLSDirectColName prikazuje stupac s bazom nula kao njegova A1 slova, XLSDirectParseRef parsira A1 referencu ćelije, a XLSDirectPasswordHash računa zastarjeli hash lozinke koji pohranjuju zapisi zaštite lista

Vidi također