Tiesioginio skaitytuvo ir rašytuvo API
TXLSDirectReader ir TXLSDirectWriter apdoroja XLSX paketus nelaikydami viso darbalapio tinklelio atmintyje, todėl API iškvietimai, apibūdinantys lapą, turi būti atlikti prieš atitinkamą srautinio perdavimo fazę arba jos metu
Rašytuvo gyvavimo ciklas ir langelių reikšmės
TXLSDirectWriter.BeginFile ar BeginStream pradeda paketą, lapo metodai apibrėžia po vieną darbalapį, o Finish įsipareigoja galutinį paketą
| Skaliariniai langeliai | WriteString, WriteRichString, WriteNumber, WriteBoolean, WriteDateTime ir WriteError |
| Formulių langeliai | WriteFormula, WriteFormulaNumber, WriteFormulaString, WriteFormulaBoolean, WriteFormulaDateTime ir WriteFormulaError priima skambintojo pateiktus talpykloje esančius rezultatus |
| Bendros eilutės | UseSharedStrings įgalina paketo lygmens eilučių deduplikaciją |
| Statistika | CellCount praneša išvestų langelių skaičių |
| Panes | FreezePanes(ColSplit, RowSplit) nurodytame stulpelyje ir eilutėje (nuo vieneto) įrašo užšaldytą skeltį |
Eilutės ir stulpeliai viešajame rašytuvo paviršiuje prasideda nuo vieneto ir turi būti pateikiami pirmyn darbalapio tvarka
Daugkartinio naudojimo stiliai
AddCellStyle registruoja nekintamą paketo lygmens stiliaus nuorodą, o CloneCellStyle išveda naują nuorodą neišlaikydamas darbalapio eilučių
Pavadinti vardai ir hipersaitai
AddDefinedName, AddLocalDefinedName, AddDefinedRange ir AddLocalDefinedRange prideda darbo knygos ar lapo vietinius vardus prieš paketo užbaigimą
AddHyperlink, AddHyperlinkRange, AddInternalHyperlink ir AddInternalHyperlinkRange išveda išorinius ryšius ar vidines lapo vietas vienam langeliui ar diapazonui
Duomenų tikrinimas
AddDataValidation ir AddDataValidationSqRef atskleidžia visą taisyklės paviršių, o AddListValidation, AddWholeNumberValidation, AddDecimalValidation, AddDateValidation, AddTimeValidation, AddTextLengthValidation ir AddCustomValidation pateikia tipizuotus pagalbininkus
Sąlyginis formatavimas
AddConditionalFormat, AddConditionalFormatExpression, AddConditionalFormatContainsText, AddConditionalFormatNotContainsText, AddConditionalFormatBeginsWith, AddConditionalFormatEndsWith, AddConditionalFormatTop10, AddConditionalFormatAboveAverage, AddConditionalFormatDuplicateValues, AddConditionalFormatUniqueValues, AddConditionalFormatContainsBlanks, AddConditionalFormatNotContainsBlanks, AddConditionalFormatContainsErrors ir AddConditionalFormatNotContainsErrors prideda skaliarines taisykles
AddConditionalFormatDataBar, AddConditionalFormatColorScale2, AddConditionalFormatColorScale3 ir AddConditionalFormatIconSet prideda vaizdines taisykles; ClearConditionalFormats pašalina laukiančias taisykles dabartiniam darbalapiui
AutoFiltras ir lentelės
AddAutoFilterValue, AddAutoFilterDateGroup ir AddAutoFilterSortCondition konfigūruoja darbalapio filtrą
AddTable sukuria lentelės dalį, o AddTableFilterValue, AddTableFilterDateGroup ir AddTableSortCondition konfigūruoja jos filtro ir rūšiavimo būseną
Apsauga ir puslapio lūžiai
ProtectSheet, UnprotectSheet, AddProtectedRange ir ClearProtectedRanges konfigūruoja darbalapio apsaugą; ProtectWorkbook ir UnprotectWorkbook konfigūruoja darbo knygos struktūros ir langų užraktus
AddHorizontalPageBreak ir AddVerticalPageBreak išveda rankinius puslapio lūžius dabartiniam darbalapiui
Tiesioginio skaitytuvo saugyklos diagnostika
TXLSDirectReader.SharedStringMemoryLimit riboja dekoduotų bendrų eilučių atmintį, SharedStringsOnDisk praneša perkėlimą į laikiną indeksuotą saugyklą, SharedStringCount praneša įkeltų įrašų skaičių, o ParallelDiag atskleidžia ribotą lygiagrečiojo analizatoriaus diagnostiką
Eilučių žymeklis
TXLSRowCursor.SelectSheet ir SelectSheetByName parenka darbalapį; SheetCount, SheetNames, SheetIndex, RowIndex ir Eof atskleidžia perėjimo būseną, o SharedStringMemoryLimit taiko tą pačią ribotą bendrų eilučių politiką kaip ir tiesioginis skaitytuvas
IncludeFormulaText pagal numatymą true; išjungus lieka talpyklinės reikšmės, koordinatės, stiliai ir HasFormula, FormulaTextAvailable tampa false, o Formula lieka tuščias
Eilučių žymeklis
TXLSRowCursor.Open priima XLS, XLSX, XLSM, ODS, CSV ir TSV failus ar srautus; ZIP automatinis atpažinimas dar prieš atveriant darbalapį atskiria ODS paketus nuo Open XML darbo knygų
SelectSheet ir SelectSheetByName pasirenka darbalapį; SheetCount, SheetNames, SheetIndex, RowIndex ir Eof atskleidžia praėjimo būseną, o SharedStringMemoryLimit taiko tą pati ribotos atminties bendrųjų eilučių politiką kaip tiesioginis skaitytuvas
FirstRow, LastRow, IncludeColumn ir ClearColumnProjection visuose žymeklio formatuose naudoja tuos pačius filtrus nuo vieneto; perdavtos parinktys negali keistis tarp FindFirst ir EOF, bet vėl tampa keičiamos po EOF, darbalapio pasirinkimo arba užvėrimo
Kiekvienas TXLSRowCursorCell HasFormula praneša nepriklausomai nuo FormulaTextAvailable; classic XLS pateikia formulės buvimą ir talpyklinį rezultatą neteigdamas, kad žetonų tekstas prieinamas, o IncludeFormulaText gali slopinti XLSX ir ODS formulės tekstą dar prieš kaupimą
ODS praėjimas laiko vieną fizinę eilutės šabloną, pakartotinius eilučių blokus apkarpo iki prašomo intervalo, tarp pasirinktų stulpelių pakartotinių ištisose ruožuose šoka tiesiai, pereina per padengtus langelius negrąžindamas jų kaip reikšmių, o negaliojančius ar tinklelio ribų viršijančius pakartojimų skaičius praneša per OnSkippedRecord
State atskiria xrcsClosed, xrcsBeforeFirst, xrcsActive, xrcsEof, xrcsCancelled ir xrcsFaulted; Cancel — idempotiškas, negaliojina dabartinės eilutės ir atlaisvina aktyvaus darbalapio srautą, išlaikydamas šaltinį, kad aiškus darbalapio pasirinkimas galėtų pradėti naują praėjimą
Srauto perkrovimas pagal numatymą naudoja xsoBorrowed ir užvėręs atkuria kviestiejo pradinę poziciją, o xsoOwned perima nuosavybę po sėkmingo atvėrimo; nepavykę atvėrimai kviestiejo nuosavybės niekada nevartoja
CurrentRowView skolina dabartinės eilutės masyvą be kopijavimo ir prieš kiekvieną prieigą tikrina generaciją; žymekliui pažengus, pasirinkus, atšaukus, užvėrus ar sunaikinus, vaizdas negalioja, o vėlesnė prieiga kelia EXLSRowCursorViewInvalidated
PeakRowBufferedBytes — monotoniškas ivertintas nuo paskutiniojo Open sukauptas vienai loginei eilutei retinetų langelių įrašų, valdomų paketų, raiškiojo teksto ir formato posistemės duomenų dydis; skirtas ribotos atminties regresinei diagnostikai, o ne tiksliai krūvos apskaitai
SheetPassesStarted skaičiuoja sėkmingus darbalapio posistemių paleidimus; darbalapio pavadinimų peržiūra ar darbalapio praleidimas per atgalinių iškvietimų fasadą darbalapio dalies neatsako
Forward callback adapteris
TXLSForwardReader XLS, XLSX, ODS, CSV ir TSV dekodavimą perduoda TXLSRowCursor, kiekvieną dabartinės eilutės langelį paverčia OnCell atgaliniu iškvietimu ir išlaiko tas pačias eilučių ribas, stulpelių projektavimą, formulės būseną, raiškųjį tekstą, slaptažodžio, praleistų įrašų, srauto pozicijos ir apriboto buferio sutartis
PeakRowBufferedBytes ir SheetPassesStarted atskleidžia bendrąsias žymeklio diagnostikas atgalinių iškvietimų sąsajoje, o classic XLS papildomai išlaiko ClassicBytesRead ir ClassicPeakBufferedBytes
Skaitytuvo įvykiai ir įrašų tipai
Skaitytuvas ir eilučių žymeklis atskleidžia neprivalomus atgalinius iškvietimus ir paprastus įrašus, visi deklaruoti lxDirectRead. Kiekvienas atgalinis iškvietimas seka tą pati forma: įrašas aprašo vieną srautinį elementą, o Abort nustatymas sustabdo skenavimą (darbalapio ivykiai papildomai priima SkipSheet)
| Cells | OnCell (type TXLSDirectCellEvent) delivers a TXLSDirectCell per cell whose Kind (TXLSDirectCellKind: xdkEmpty, xdkNumber, xdkString, xdkBoolean, xdkDate, xdkError) selects the populated value field; rich text travels as a TXLSDirectRichText holding TXLSDirectRichTextRun entries, each with a TXLSDirectRichColor (kind TXLSDirectRichColorKind), TXLSDirectRichUnderline, and TXLSDirectRichVertAlign, plus optional TXLSDirectPhoneticProperties and TXLSDirectPhoneticRun data |
| Sheet framing | OnSheet (TXLSDirectSheetEvent) gali praleisti visą darbalapį, kol jo langeliai dar neanalizuoti; OnSkippedRecord (TXLSDirectSkippedEvent) praneša netinkamus arba apkarpytus turinius su įrašo id ir priežastimi |
| Sheet layout | OnDimension, OnSheetFormat, OnColumn, OnRow, OnMerge ir OnPane perduoda TXLSDirectDimension, TXLSDirectSheetFormat, TXLSDirectColumn, TXLSDirectRow, TXLSDirectMerge ir TXLSDirectPane įrašus; panelės būsena naudoja TXLSDirectPaneState (xdpsSplit, xdpsFrozen, xdpsFrozenSplit, xdpsUnknown) |
| Cursor state | TXLSRowCursor.State — TXLSRowCursorState (xrcsClosed, xrcsBeforeFirst, xrcsActive, xrcsEof, xrcsCancelled, xrcsFaulted); Open srauto perkrovimas ima TXLSStreamOwnership (numatytasis xsoBorrowed, xsoOwned perima nuosavybę), o CurrentRowView grąžina IXLSRowCursorView skolinamą vaizdą, kurio Valid ypatybė saugo prieigą, o ValueByCol skaito vieną skolintos eilutės langelį be kopijavimo; žymekliui pažengus vaizdas negalioja |
Rašytuvo parametrų ir stilių tipai
Rašytuvo tipizuotieji pagalbininkai (lxDirectWrite) priima įrašus ir išvardinimus, kad kvietimai liktų be vietos išskyrimo: WriteRichString ima TXLSDirectRichText; AddCellStyle iš TXLSDirectCellStyle sukonstruoja paketo lygio stilių, kurio lygiavimas (TXLSDirectHorizontalAlignment, TXLSDirectVerticalAlignment), pabraukimas (TXLSDirectUnderline), užpildymo raštas (TXLSDirectFillPattern) ir kraštinių pusės (TXLSDirectStyleBorder su TXLSDirectBorderSide) atkartoja OOXML stilių modelį. Sąlyginiai formatai perduoda TXLSDirectConditionalFormat su TXLSDirectCfKind / TXLSDirectCfOperator / TXLSDirectCfValue / TXLSDirectCfValueKind ir TXLSDirectIconSetType, duomenų tikrinimas — TXLSDirectDataValidation, lentelės — TXLSDirectTable, hipersaitai — TXLSDirectHyperlink, apibrėžtieji vardai — TXLSDirectDefinedName, diferenciniai stiliai — TXLSDirectDxfStyle, komentarai — TXLSDirectComment, vaizdai — TXLSDirectImage su TXLSDirectImageFormat, diagramos — TXLSDirectChart su TXLSDirectChartSeries ir TXLSDirectChartType, sujungimai — TXLSDirectMergeRange, apsaugoti diapazonai — TXLSDirectProtectedRange, lapo apsauga — TXLSDirectSheetProtectionOptions aibę iš TXLSDirectSheetProtectionOption, automatinio filtro rikiavimo būsena — TXLSDirectSortState, stulpelių parinktys — TXLSDirectColumnOption, o puslapio geometrija — TXLSDirectPageMargins įrašą
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 eilutes semia iš programos: tiekėjas rašo eilutės langelius tiesiai per rašytuvą ir palieka Eof = False, arba su Eof = True deklaruoja išsekimą ir sustabdo ciklą. Pagalbininkai konvertuoja koordinates ir apsaugos primitivus: XLSDirectColName nulinio pagrindo stulpelį paverčia A1 raidėmis, XLSDirectParseRef išanalizuoja A1 langelio nuorodą, o XLSDirectPasswordHash apskaičiuoja senajį slaptažodžio maišos, kurį saugo lapo apsaugos įrašai