Dokumentacja HotXLS

Metoda CreateLoadedCellCursor

Tworzy kursor sekwencyjnego wyliczania zapisanych komórek w załadowanym skoroszycie XLSX, z opcją uwzględnienia pustych komórek o własnym formatowaniu

Składnia

function CreateLoadedCellCursor: IXLSLoadedCellCursor; overload;
function CreateLoadedCellCursor(
  AIncludeStoredBlanks: Boolean): IXLSLoadedCellCursor; overload;

Kolejność i koszt przechodzenia

Kursor odwiedza arkusze w kolejności kolekcji, następnie komórki według rosnącego wiersza i kolumny

SheetIndex, Row i Col to publiczne współrzędne numerowane od jedynki

Zmaterializowane arkusze są odczytywane bezpośrednio z ich przydzielonych rozrzedzonych bloków po 256 wierszy, bez budowania posortowanej listy komórek

Spakowane arkusze są odczytywane bezpośrednio przez iterator magazynu spakowanego i pozostają spakowane po przechodzeniu

Stan kursora jest stały względem rozmiaru skoroszytu i nie przydziela tablic o rozmiarze odpowiadającym limitom wierszy czy kolumn XLSX

Przeciążenie bez parametrów pomija puste komórki różniące się tylko stylem, zapisane zastępniki Empty i zapisane zastępniki Null

Przekaż True, aby uwzględnić współrzędne pustych komórek o niezależnym formatowaniu z magazynu zmaterializowanego lub spakowanego, bez materializowania komórek spakowanych

Niesformatowane zastępniki Empty i Null pozostają wyłączone w obu trybach

Pola migawki

PoleZnaczenie
SheetIndex / SheetNameTożsamość arkusza będącego właścicielem w chwili przechwycenia
Row / ColWspółrzędne komórki numerowane od jedynki
StyleIndexIndeks formatu komórki XLSX przechwycony z magazynu zmaterializowanego lub spakowanego
KindxlckText, xlckNumber, xlckDateTime, xlckBoolean, xlckFormula, xlckError lub xlckBlank
ValueWartość Variant będąca własnością migawki, przechwycona dla bieżącej komórki
FormulaTekst formuły dla komórek z formułami, w przeciwnym razie pusty ciąg

Ciągi i wartości Variant w TXLSLoadedCellSnapshot należą do samej migawki i nie ujawniają wewnętrznych wskaźników komórek ani magazynu spakowanego

Dla komórek z formułami XLSX Value to obecnie zapisana wartość z pamięci podręcznej, a przechodzenie nie przelicza formuły ponownie

Dla xlckBlank Value wynosi Unassigned, Formula jest pusty, a StyleIndex identyfikuje zapisany format komórki

Stan, unieważnianie i czas życia

State przyjmuje xlccBeforeFirst do pierwszego udanego MoveNext, xlccActive, gdy Current jest dostępne, i xlccEof po zakończeniu przechodzenia

Odczyt Current przed pierwszą komórką lub po EOF zgłasza EXLSLoadedCellCursorState

Tworzenie lub usuwanie zapisanych komórek, materializacja magazynu spakowanego, jawne przebudowy indeksów albo dodawanie, usuwanie, przenoszenie lub czyszczenie arkuszy unieważnia kursor

Następne wywołanie MoveNext lub Current zgłasza EXLSLoadedCellCursorInvalidated

Zmiana wartości, formuły lub formatu istniejącej komórki nie unieważnia kursora, a już przechwycona migawka pozostaje bez zmian

Zwolnienie skoroszytu przed kursorem również zgłasza EXLSLoadedCellCursorInvalidated zamiast pozostawiać kursor z wiszącym wskaźnikiem na skoroszyt

Walidacja generacji to wykrywanie z natychmiastową odmową i nie czyni równoległej modyfikacji oraz przechodzenia bezpiecznymi wątkowo

Przykład

Cursor := Workbook.CreateLoadedCellCursor;
while Cursor.MoveNext do
begin
  Cell := Cursor.Current;
  Memo1.Lines.Add(Format('%s!R%dC%d = %s',
    [Cell.SheetName, Cell.Row, Cell.Col, VarToStr(Cell.Value)]));
end;

Zobacz także