Dokumentacija HotXLS

API za direktno čitanje i upis

TXLSDirectReader i TXLSDirectWriter obrađuju XLSX pakete bez zadržavanja kompletne mreže radnog lista u memoriji, pa se pozivi API-ja koji opisuju radni list moraju obaviti pre ili tokom odgovarajuće faze strimovanja

Životni ciklus upisivača i vrednosti ćelija

TXLSDirectWriter.BeginFile ili BeginStream pokreću paket, metode radnog lista definišu po jedan radni list, a Finish potvrđuje konačni paket

Scalar cellsWriteString, WriteRichString, WriteNumber, WriteBoolean, WriteDateTimei WriteError
Formula cellsWriteFormula, WriteFormulaNumber, WriteFormulaString, WriteFormulaBoolean, WriteFormulaDateTimei WriteFormulaError prihvataju keširane rezultate koje isporučuje pozivalac
Shared stringsUseSharedStrings omogućava deduplikaciju niski na nivou paketa
StatisticsCellCount izveštava o broju emitovanih ćelija
PanesFreezePanes(ColSplit, RowSplit) upisuje zamrznuti prelom na datu kolonu i red (1-bazna)

Redovi i kolone su zasnovani na jedinici (one-based) u javnoj površini upisivača i moraju se isporučiti u redosledu radnog lista unapred

Višekratno upotrebljivi stilovi

AddCellStyle registruje nepromenljivu ručku stila na nivou paketa, a CloneCellStyle izvodi novu ručku bez zadržavanja redova radnog lista

Definisana imena i hiperveze

AddDefinedName, AddLocalDefinedName, AddDefinedRangei AddLocalDefinedRange dodaju imena radne sveske ili lokalna imena radnog lista pre finalizacije paketa

AddHyperlink, AddHyperlinkRange, AddInternalHyperlinki AddInternalHyperlinkRange emituju spoljne relacije ili unutrašnje lokacije radnog lista za jednu ćeliju ili opseg

Validacija podataka

AddDataValidation i AddDataValidationSqRef izlažu kompletnu površinu pravila, dok AddListValidation, AddWholeNumberValidation, AddDecimalValidation, AddDateValidation, AddTimeValidation, AddTextLengthValidationi AddCustomValidation pružaju tipizirane pomoćnike

Uslovno formatiranje

AddConditionalFormat, AddConditionalFormatExpression, AddConditionalFormatContainsText, AddConditionalFormatNotContainsText, AddConditionalFormatBeginsWith, AddConditionalFormatEndsWith, AddConditionalFormatTop10, AddConditionalFormatAboveAverage, AddConditionalFormatDuplicateValues, AddConditionalFormatUniqueValues, AddConditionalFormatContainsBlanks, AddConditionalFormatNotContainsBlanks, AddConditionalFormatContainsErrorsi AddConditionalFormatNotContainsErrors dodaju skalarne stilove pravila

AddConditionalFormatDataBar, AddConditionalFormatColorScale2, AddConditionalFormatColorScale3i AddConditionalFormatIconSet dodaju vizuelna pravila; ClearConditionalFormats uklanja nepotvrđena pravila za trenutni radni list

Automatski filter i tabele

AddAutoFilterValue, AddAutoFilterDateGroupi AddAutoFilterSortCondition konfigurišu filter radnog lista

AddTable kreira deo tabele, a AddTableFilterValue, AddTableFilterDateGroupi AddTableSortCondition konfigurišu njegovo stanje filtera i sortiranja

Zaštita i prelomi stranica

ProtectSheet, UnprotectSheet, AddProtectedRangei ClearProtectedRanges konfigurišu zaštitu radnog lista; ProtectWorkbook i UnprotectWorkbook konfigurišu strukturu radne sveske i zaključavanja prozora

AddHorizontalPageBreak i AddVerticalPageBreak emituju ručne prelome stranica za trenutni radni list

Dijagnostika skladišta direktnog čitača

TXLSDirectReader.SharedStringMemoryLimit ograničava memoriju dekodiranih deljenih niski, SharedStringsOnDisk izveštava o migraciji u privremeno indeksirano skladište, SharedStringCount izveštava o broju učitanih stavki, a ParallelDiag izlaže ograničenu dijagnostiku paralelnog raščlanjivanja

Projekcija čitača i stanje formula

FirstRow, LastRow, IncludeColumni ClearColumnProjection guraju izbor redova i kolona (1-baznih) u parser radnog lista pre dodele vrednosti, formule ili rich text sadržaja

IncludeFormulaText je podrazumevano uključen; njegovo isključivanje zadržava keširane vrednosti, koordinate, stilove i HasFormula , dok FormulaTextAvailable postaje false i Formula ostaje prazna

Kursor redova

TXLSRowCursor.Open prihvata XLS, XLSX, XLSM, ODS, CSV i TSV datoteke ili tokove; automatska ZIP detekcija razlikuje ODS pakete od Open XML radnih sveski pre otvaranja lista

SelectSheet i SelectSheetByName biraju radni list; SheetCount, SheetNames, SheetIndex, RowIndexi Eof izlažu stanje prolaska, dok SharedStringMemoryLimit primenjuje isto ograničeno pravilo deljenih niski kao direktni čitač

FirstRow, LastRow, IncludeColumni ClearColumnProjection koriste iste 1-bazne filtere u svim formatima kursora; opcije prolaska ne mogu da se menjaju između FindFirst i EOF, ali ponovo postaju promenljive nakon EOF, izbora lista ili zatvaranja

Svaka TXLSRowCursorCell prijavljuje HasFormula nezavisno od FormulaTextAvailable; klasični XLS izlaže prisustvo formule i keširane rezultate bez tvrdnji o nedostupnom tekstu tokena, dok IncludeFormulaText može da potisne tekst formula u XLSX i ODS formatima pre akumulacije

Prolazak kroz ODS drži jedan fizički šablon reda, skraćuje ponovljene blokove redova na traženi interval, skače neposredno između izabranih kolona unutar ponovljenih raspona, prelazi preko pokrivenih ćelija bez njihovog vraćanja kao vrednosti i kroz OnSkippedRecord

State razlikuje xrcsClosed, xrcsBeforeFirst, xrcsActive, xrcsEof, xrcsCancelledi xrcsFaulted; Cancel je idempotentan, poništava tekući red i oslobađa tok aktivnog radnog lista, uz zadržavanje izvora kako eksplicitna selekcija lista može da započne novi prolaz

Overload sa tokom podrazumeva xsoBorrowed, vraća početni položaj pozivaoca pri zatvaranju i prihvata xsoOwned za prenos vlasništva nakon uspešnog otvaranja; neuspela otvaranja nikada ne troše vlasništvo pozivaoca

CurrentRowView pozajmljuje niz tekućeg reda bez kopiranja i proverava generaciju pre svakog pristupa; napredovanje, selekcija, otkazivanje, zatvaranje ili uništavanje kursora poništava pogled i pri kasnijem pristupu podiže EXLSRowCursorViewInvalidated on later access

PeakRowBufferedBytes je monotona procena od poslednjeg Open -a za zapise ćelija, upravljane nosioce podataka, rich text i podatke format pozadine zadržane za jedan logički red; namenjena je dijagnostici regresije ograničene memorije, a ne tačnom računovodstvu gomile

SheetPassesStarted broji uspešna pokretanja pozadine radnog lista; pregledanje imena listova ili preskakanje lista kroz callback fasadu ne otvara deo radnog lista

Adapter forward Callback-ova

TXLSForwardReader delegira dekodovanje XLS, XLSX, ODS, CSV i TSV formata na TXLSRowCursor, pretvara svaku ćeliju tekućeg reda u Callback OnCell i čuva iste ugovore o granicama redova, projekciji kolona, stanju formula, rich tekstu, lozinkama, preskočenim zapisima, položaju toka i ograničenim baferima

PeakRowBufferedBytes i SheetPassesStarted izlažu zajedničku dijagnostiku kursora na callback površini, dok klasični XLS dodatno zadržava ClassicBytesRead i ClassicPeakBufferedBytes

Događaji čitača i tipovi zapisa

Čitač i kursor redova izlažu opcione Callback-ove i obične zapise, svi deklarisani u lxDirectRead. Svaki Callback prati isti oblik: zapis opisuje jedan strimovan objekat, a postavljanje Abort zaustavlja skeniranje (sheet događaji dodatno prihvataju SkipSheet)

CellsOnCell (tip TXLSDirectCellEvent) isporučuje TXLSDirectCell po ćeliji čiji Kind (TXLSDirectCellKind: xdkEmpty, xdkNumber, xdkString, xdkBoolean, xdkDate, xdkError) bira popunjeno polje vrednosti; rich text putuje kao TXLSDirectRichText koji drži unose TXLSDirectRichTextRun , svaki sa TXLSDirectRichColor (vrsta TXLSDirectRichColorKind), TXLSDirectRichUnderlinei TXLSDirectRichVertAlign, plus opcionim podacima TXLSDirectPhoneticProperties i TXLSDirectPhoneticRun data
Sheet framingOnSheet (TXLSDirectSheetEvent) može da preskoči ceo radni list pre parsiranja njegovih ćelija; OnSkippedRecord (TXLSDirectSkippedEvent) prijavljuje loše formiran ili odsečen sadržaj sa id-jem zapisa i razlogom
Sheet layoutOnDimension, OnSheetFormat, OnColumn, OnRow, OnMergei OnPane isporučuju zapise TXLSDirectDimension, TXLSDirectSheetFormat, TXLSDirectColumn, TXLSDirectRow, TXLSDirectMergei TXLSDirectPane ; stanje okna koristi TXLSDirectPaneState (xdpsSplit, xdpsFrozen, xdpsFrozenSplit, xdpsUnknown)
Cursor stateTXLSRowCursor.State je TXLSRowCursorState (xrcsClosed, xrcsBeforeFirst, xrcsActive, xrcsEof, xrcsCancelled, xrcsFaulted); overload Open -a sa tokom prima TXLSStreamOwnership (podrazumevanoxsoBorrowed , xsoOwned za prenos vlasništva), a CurrentRowView vraća pozajmljeni pregled IXLSRowCursorView čije svojstvo Valid štiti pristup i čiji ValueByCol čita jednu ćeliju pozajmljenog reda bez kopiranja; pregled se poništava kada kursor napreduje

Tipovi parametara i stilova upisivača

Tipizirani pomoćnici upisivača (lxDirectWrite) prihvataju zapise i enumeracije tako da pozivi ostaju bez alokacija: WriteRichString prima TXLSDirectRichText; AddCellStyle gradi stil na nivou paketa iz TXLSDirectCellStyle čije poravnanje (TXLSDirectHorizontalAlignment, TXLSDirectVerticalAlignment), podvlaka (TXLSDirectUnderline), šara popune (TXLSDirectFillPattern) i stranice ivica (TXLSDirectStyleBorder sa TXLSDirectBorderSide) prate OOXML model stilova. Uslovni formati prosleđuju TXLSDirectConditionalFormat sa TXLSDirectCfKind / TXLSDirectCfOperator / TXLSDirectCfValue / TXLSDirectCfValueKind i TXLSDirectIconSetType, provera podataka TXLSDirectDataValidation, tabele TXLSDirectTable, hiperlinkovi TXLSDirectHyperlink, definisana imena TXLSDirectDefinedName, diferencijalni stilovi TXLSDirectDxfStyle, komentari TXLSDirectComment, slike TXLSDirectImage sa TXLSDirectImageFormat, grafikoni TXLSDirectChart sa TXLSDirectChartSeries i TXLSDirectChartType, spajanja TXLSDirectMergeRange, zaštićeni opseci TXLSDirectProtectedRange, zaštita lista skup TXLSDirectSheetProtectionOptions od TXLSDirectSheetProtectionOption, stanje sortiranja automatskog filtera TXLSDirectSortState, opcije kolone TXLSDirectColumnOption, a geometrija stranice zapis TXLSDirectPageMargins record

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 redove iz aplikacije: dobavljač upisuje ćelije reda neposredno kroz upisivač i ostavlja Eof = False, ili prijavljuje iscrpljenost sa Eof = True da zaustavi petlju. Pomoćnici pretvaraju koordinate i primitive zaštite: XLSDirectColName prikazuje 0-baznu kolonu kao njena A1 slova, XLSDirectParseRef parsira A1 referencu ćelije, a XLSDirectPasswordHash računa zastareli heš lozinke koji čuvaju zapisi zaštite lista

Vidi takođe