HotXLS-dokumentaatio

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

SkalaarisolutWriteString, WriteRichString, WriteNumber, WriteBoolean, WriteDateTime ja WriteError
KaavasolutWriteFormula, WriteFormulaNumber, WriteFormulaString, WriteFormulaBoolean, WriteFormulaDateTime ja WriteFormulaError hyväksyvät soittajan toimittamat välimuistitulokset
Jaetut merkkijonotUseSharedStrings mahdollistaa pakettitason merkkijonojen deduplikoinnin
TilastotCellCount raportoi lähetettyjen solujen määrän
RuudutFreezePanes(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)

SolutOnCell (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 kehysOnSheet (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 asetteluOnDimension, 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 tilaTXLSRowCursor.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

Katso myös