Suora lukija- ja kirjoitin-API
TXLSDirectReader ja TXLSDirectWriter käsittelevät XLSX-paketteja pitämättä täydellistä laskentataulukkoruudukkoa muistissa, joten laskentataulukkoa kuvaavat API-kutsut on tehtävä ennen vastaavaa streamausvaihetta tai sen aikana
Kirjoittimen elinkaari ja solujen arvot
TXLSDirectWriter.BeginFile tai BeginStream käynnistää paketin, laskentataulukkometodit määrittävät yhden laskentataulukon kerrallaan ja Finish sitoo lopullisen paketin
| Skalaarisolut | WriteString, WriteRichString, WriteNumber, WriteBoolean, WriteDateTime ja WriteError |
| Kaavasolut | WriteFormula, WriteFormulaNumber, WriteFormulaString, WriteFormulaBoolean, WriteFormulaDateTime ja WriteFormulaError hyväksyvät soittajan toimittamat välimuistitulokset |
| Jaetut merkkijonot | UseSharedStrings mahdollistaa pakettitason merkkijonojen deduplikoinnin |
| Tilastot | CellCount raportoi lähetettyjen solujen määrän |
| Ruudut | FreezePanes(ColSplit, RowSplit) kirjoittaa kiinnitetyn jaon annettuun 1-pohjaiseen sarakkeeseen ja riviin |
Rivit ja sarakkeet ovat ykkösperusteisia julkisessa kirjoitinpinnassa, ja ne on toimitettava laskentataulukon eteenpäin suuntautuvassa järjestyksessä
Uudelleenkäytettävät tyylit
AddCellStyle rekisteröi muuttumattoman pakettitason tyylikahvan ja CloneCellStyle johtaa uuden kahvan säilyttämättä laskentataulukon rivejä
Määritellyt nimet ja hyperlinkit
AddDefinedName, AddLocalDefinedName, AddDefinedRange ja AddLocalDefinedRange lisäävät työkirja- tai laskentataulukkokohtaisia nimiä ennen paketin viimeistelyä
AddHyperlink, AddHyperlinkRange, AddInternalHyperlink ja AddInternalHyperlinkRange tuottavat ulkoisia suhteita tai sisäisiä laskentataulukon sijainteja yhdelle solulle tai alueelle
Datan validointi
AddDataValidation ja AddDataValidationSqRef paljastavat täydellisen sääntöpinnan, kun AddListValidation, AddWholeNumberValidation, AddDecimalValidation, AddDateValidation, AddTimeValidation, AddTextLengthValidation ja AddCustomValidation tarjoavat tyypitettyjä apufunktioita
Ehdollinen muotoilu
AddConditionalFormat, AddConditionalFormatExpression, AddConditionalFormatContainsText, AddConditionalFormatNotContainsText, AddConditionalFormatBeginsWith, AddConditionalFormatEndsWith, AddConditionalFormatTop10, AddConditionalFormatAboveAverage, AddConditionalFormatDuplicateValues, AddConditionalFormatUniqueValues, AddConditionalFormatContainsBlanks, AddConditionalFormatNotContainsBlanks, AddConditionalFormatContainsErrors ja AddConditionalFormatNotContainsErrors lisäävät skalaarisääntöjä
AddConditionalFormatDataBar, AddConditionalFormatColorScale2, AddConditionalFormatColorScale3 ja AddConditionalFormatIconSet lisäävät visuaalisia sääntöjä; ClearConditionalFormats poistaa odottavat säännöt nykyiseltä laskentataulukolta
Automaattisuodatin ja taulukot
AddAutoFilterValue, AddAutoFilterDateGroup ja AddAutoFilterSortCondition määrittävät laskentataulukon suodattimen
AddTable luo taulukko-osan, ja AddTableFilterValue, AddTableFilterDateGroup ja AddTableSortCondition määrittävät sen suodattimen ja lajittelutilan
Suojaus ja sivunvaihdot
ProtectSheet, UnprotectSheet, AddProtectedRange ja ClearProtectedRanges määrittävät laskentataulukon suojauksen; ProtectWorkbook ja UnprotectWorkbook määrittävät työkirjan rakenteen ja ikkunalukitukset
AddHorizontalPageBreak ja AddVerticalPageBreak tuottavat manuaaliset sivunvaihdot nykyiselle laskentataulukolle
Suoran lukijan tallennusdiagnostiikka
TXLSDirectReader.SharedStringMemoryLimit rajaa purettujen jaettujen merkkijonojen muistin, SharedStringsOnDisk raportoi siirtymisen väliaikaiseen indeksoituun tallennustilaan, SharedStringCount raportoi ladattujen merkintöjen määrän ja ParallelDiag paljastaa rajattuja rinnakkaisjäsentimen diagnostiikkatietoja
Lukijan projektio ja kaavojen tila
FirstRow, LastRow, IncludeColumn ja ClearColumnProjection vievät rivi- ja 1-pohjaisen sarakkeiden valinnan laskentataulukon jäsentimeen ennen arvojen, kaavojen tai rikkaan tekstin varaamista
IncludeFormulaText on oletuksena tosi; sen poistaminen käytöstä säilyttää välimuistissa olevat arvot, koordinaatit, tyylit ja HasFormulain, kun taas FormulaTextAvailable muuttuu epätodeksi ja Formula pysyy tyhjänä
Rivikursori
TXLSRowCursor.Open hyväksyy XLS-, XLSX-, XLSM-, ODS-, CSV- ja TSV-tiedostoja tai virtoja; ZIP-tunnistus erottaa ODS-paketit Open XML -työkirjoista ennen laskentataulukon avaamista
SelectSheet ja SelectSheetByName valitsevat laskentataulukon; SheetCount, SheetNames, SheetIndex, RowIndex ja Eof paljastavat läpikäynnin tilan, kun SharedStringMemoryLimit soveltaa samaa rajattua jaettujen merkkijonojen käytäntöä kuin suora lukija
FirstRow, LastRow, IncludeColumn ja ClearColumnProjection käyttävät samoja 1-pohjaisia suodattimia kaikissa kursorimuodoissa; pass-asetuksia ei voi muuttaa FindFirstin ja EOFin välillä, mutta ne muuttuvat taas muutettaviksi EOFin, taulukon valinnan tai sulkemisen jälkeen
Jokainen TXLSRowCursorCell raportoi HasFormulain riippumatta FormulaTextAvailableista; klassinen XLS paljastaa kaavan läsnäolon ja välimuistissa olevat tulokset väittämättä saatavilla olevaa tokenitekstiä, kun taas IncludeFormulaText voi hiljentää XLSX- ja ODS-kaavatekstit ennen kertymistä
ODS-läpikäynti pitää yhtä fyysistä rivimallia, leikkaaa toistuvat rivilohkot pyydettyyn väliin, hyppää suoraan valittujen sarakkeiden välille toistuvien jaksojen sisällä, etenee kattamiensa solujen yli palauttamatta niitä arvoina ja raportoi kelvottomat tai ruudukkoon rajoitetut toistomäärät OnSkippedRecordin kautta
State erottaa tilat xrcsClosed, xrcsBeforeFirst, xrcsActive, xrcsEof, xrcsCancelled ja xrcsFaulted; Cancel on idempotentti, mitätöi nykyisen rivin ja vapauttaa aktiivisen laskentataulukon virran säilyttäen lähteen, joten eksplisiittinen taulukon valinta voi aloittaa uuden kierroksen
Virtakuormitus käyttää oletuksena xsoBorrowedia, palauttaa soittajan alkuperäisen sijainnin sulkuhetkellä ja hyväksyy xsoOwnedin omistajuuden siirtämiseksi onnistuneen avauksen jälkeen; epäonnistuneet avaukset eivät koskaan kuluta soittajan omistajuutta
CurrentRowView lainaa nykyisen rivitaulukon kopioimatta sitä ja tarkistaa generaation joka käyttökerralla; eteenpäin siirtyminen, valinta, peruutus, sulkeminen tai kursorin tuhoaminen mitätöi näkymän ja nostaa EXLSRowCursorViewInvalidatedin myöhemmässä käytössä
PeakRowBufferedBytes on monotoninen arvio viimeisimmän Openin jälkeen solutietueista, hallituista payloadeista, rikkaan tekstin ja muotobackendin datasta, jotka pidetään yhtä loogista riviä varten; se on tarkoitettu rajatun muistin regressiodiagnostiikkaan, ei tarkkaan keon kirjanpitoon
SheetPassesStarted laskee onnistuneet laskentataulukon backendin käynnistykset; taulukoiden nimien tarkastelu tai taulukon ohittaminen callback-fasadin kautta ei avaa laskentataulukko-osaa
Forward-callback-sovitin
TXLSForwardReader uskoo XLS-, XLSX-, ODS-, CSV- ja TSV-dekoodauksen TXLSRowCursorille, muuntaa jokaisen nykyisen rivisolun OnCell-callbackiksi ja säilyttää samat rivirajat, sarakkeprojektion, kaavojen tilan, rikkaan tekstin, salasanan, ohitettujen tietueiden, virtasijainnin ja rajatun puskurin sopimukset
PeakRowBufferedBytes ja SheetPassesStarted paljastavat jaetut kursoridiagnostiikat callback-pinnalla, ja klassinen XLS säilyttää lisäksi ClassicBytesReadin ja ClassicPeakBufferedBytesin
Lukijan tapahtumat ja tietuetyypit
Lukija ja rivikursori paljastavat valinnaisia callbackeja ja tavallisia tietueita, jotka kaikki on julistettu yksikössä lxDirectRead. Jokainen callback noudattaa samaa muotoa: tietue kuvaa yhden striimauksen kohteen, ja Abortin asettaminen pysäyttää skannauksen (taulukkotapahtumat hyväksyvät lisäksi SkipSheetin)
| Solut | OnCell (tyyppi TXLSDirectCellEvent) toimittaa TXLSDirectCellin per solun, jonka Kind (TXLSDirectCellKind: xdkEmpty, xdkNumber, xdkString, xdkBoolean, xdkDate, xdkError) valitsee täytetyn arvokentän; rikas teksti kulkee TXLSDirectRichTextinä, joka pitää sisällään TXLSDirectRichTextRun-alkioita, joilla kullakin on TXLSDirectRichColor (tyyppi TXLSDirectRichColorKind), TXLSDirectRichUnderline ja TXLSDirectRichVertAlign sekä valinnaiset TXLSDirectPhoneticProperties- ja TXLSDirectPhoneticRun-tiedot |
| Taulukon kehys | OnSheet (TXLSDirectSheetEvent) voi ohittaa kokonaisen laskentataulukon ennen sen solujen jäsentämistä; OnSkippedRecord (TXLSDirectSkippedEvent) raportoi virheellisen tai katkaistun sisällön tietueen tunnisteella ja syyllä |
| Taulukon asettelu | OnDimension, OnSheetFormat, OnColumn, OnRow, OnMerge ja OnPane toimittavat TXLSDirectDimension-, TXLSDirectSheetFormat-, TXLSDirectColumn-, TXLSDirectRow-, TXLSDirectMerge- ja TXLSDirectPane-tietueet; ruudun tila käyttää TXLSDirectPaneStateia (xdpsSplit, xdpsFrozen, xdpsFrozenSplit, xdpsUnknown) |
| Kursorin tila | TXLSRowCursor.State on TXLSRowCursorState (xrcsClosed, xrcsBeforeFirst, xrcsActive, xrcsEof, xrcsCancelled, xrcsFaulted); Openin virtakuormitus ottaa TXLSStreamOwnershipin (xsoBorrowed oletuksena, xsoOwned siirtää omistajuuden), ja CurrentRowView palauttaa IXLSRowCursorView-lainanäkymän, jonka Valid-ominaisuus suojaa käyttöä ja jonka ValueByCol lukee yhden lainatun rivin solun kopioimatta; näkymä mitätöityy, kun kursori etenee |
Kirjoittimen parametri- ja tyylityypit
Kirjoittimen tyypitetyt apurit (lxDirectWrite) hyväksyvät tietueita ja enumereita, joten kutsut pysyvät varauksettomina: WriteRichString ottaa TXLSDirectRichTextin; AddCellStyle rakentaa pakettitason tyylin TXLSDirectCellStyleista, jonka tasaus (TXLSDirectHorizontalAlignment, TXLSDirectVerticalAlignment), alleviivaus (TXLSDirectUnderline), täyttökuvio (TXLSDirectFillPattern) ja reunussivut (TXLSDirectStyleBorder TXLSDirectBorderSideilla) peilaavat OOXML:n tyylimallia. Ehdolliset muotoilut välittävät TXLSDirectConditionalFormatin TXLSDirectCfKind / TXLSDirectCfOperator / TXLSDirectCfValue / TXLSDirectCfValueKind ja TXLSDirectIconSetType kera, tietojen validointi TXLSDirectDataValidationin, taulukot TXLSDirectTablein, hyperlinkit TXLSDirectHyperlinkin, määritellyt nimet TXLSDirectDefinedNamein, differentiaaliset tyylit TXLSDirectDxfStylein, kommentit TXLSDirectCommentin, kuvat TXLSDirectImagein TXLSDirectImageFormatilla, kaaviot TXLSDirectChartin TXLSDirectChartSerieslla ja TXLSDirectChartTypella, yhdistetyt alueet TXLSDirectMergeRangein, suojatut alueet TXLSDirectProtectedRangein, laskentataulukon suojaus TXLSDirectSheetProtectionOptions-joukon, jonka alkiot ovat tyyppiä TXLSDirectSheetProtectionOption, automaattisuodattimen lajittelutilan TXLSDirectSortStatein, sarakeasetukset TXLSDirectColumnOptionin ja sivugeometria TXLSDirectPageMargins-tietueen
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 vetää rivit sovellukselta: toimittaja kirjoittaa rivin solut suoraan kirjoittimen läpi ja jättää Eof = Falsein, tai ilmoittaa loppuneen Eof = Truella pysäyttääkseen silmukan. Apurit muuntavat koordinaattien ja suojausprimitiivien välillä: XLSDirectColName muotoilee 0-pohjaisen sarakkeen sen A1-kirjaimiksi, XLSDirectParseRef jäsentää A1-soluviittauksen ja XLSDirectPasswordHash laskee legacy-salasanan tiivisteen, jonka taulukonsuojauksen tietueet tallentavat