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
| Pole | Znaczenie |
|---|---|
SheetIndex / SheetName | Tożsamość arkusza będącego właścicielem w chwili przechwycenia |
Row / Col | Współrzędne komórki numerowane od jedynki |
StyleIndex | Indeks formatu komórki XLSX przechwycony z magazynu zmaterializowanego lub spakowanego |
Kind | xlckText, xlckNumber, xlckDateTime, xlckBoolean, xlckFormula, xlckError lub xlckBlank |
Value | Wartość Variant będąca własnością migawki, przechwycona dla bieżącej komórki |
Formula | Tekst 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;