Metoda CreateLoadedCellCursor
Tworzy kursor sekwencyjnego wyliczania zapisanych komórek w załadowanym skoroszycie klasycznego XLS, 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, Rowi Col to publiczne współrzędne numerowane od jedynki
Przechodzenie podąża bezpośrednio za przydzielonymi gałęziami klasycznego rozrzedzonego magazynu, dzięki czemu stan kursora pozostaje stały i nie przydziela tablic o rozmiarze odpowiadającym limitom wierszy czy kolumn arkusza
Przeciążenie bez parametrów pomija puste komórki i zachowuje istniejący kontrakt przechodzenia wartości i formuł
Przekaż True , aby uwzględnić zapisane puste komórki, których XF komórki różni się od odziedziczonego formatu wiersza, kolumny lub arkusza
Samo odziedziczone formatowanie nie materializuje ani nie emituje współrzędnej pustej komórki
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 stylu klasycznego XF |
Kind (TXLSLoadedCellKind) | xlckText, xlckNumber, xlckDateTime, xlckBoolean, xlckFormulalub 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 obiektów komórek
Dla komórek z formułami Value podlega normalnej semantyce dostępu do wartości skoroszytu klasycznego, włącznie z obliczaniem, gdy jest wymagane
Dla xlckBlank, Value wynosi Unassigned, Formula jest pusty, a StyleIndex identyfikuje zapisany XF komórki
Stan i unieważnianie
State (type TXLSLoadedCellCursorStateprzyjmuje 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, dodawanie, usuwanie lub przenoszenie arkuszy albo zastąpienie modelu skoroszytu 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
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;