TXLSXCell je jedna bunka (hodnota plus voliteľný vzorec a
index formátu); TXLSXCells je kolekcia pre každý pracovný hárok,
ku ktorej sa pristupuje cez Worksheet.Cells. Deklarované v
lxHandleX
type
TXLSXCell = class
constructor Create(ARow, ACol: Integer; const AValue: Variant);
destructor Destroy; override;
procedure SetWorkbook(AWorkbook: TXLSXWorkbook);
procedure SetArrayRoot(ARootRow, ARootCol: Integer);
procedure SetArrayRange(ARootRow, ARootCol, ALastRow, ALastCol: Integer);
property Workbook: TXLSXWorkbook;
property ArrayRootRow: Integer;
property ArrayRootCol: Integer;
property ArrayLastRow: Integer;
property ArrayLastCol: Integer;
property Row: Integer;
property Col: Integer;
property Value: Variant;
property FormatIndex: Integer;
property FontIndex: Integer;
property FillIndex: Integer;
property BorderIndex: Integer;
property NumberFormatIndex: Integer;
property NumberFormat: WideString;
property AlignmentIndex: Integer;
property ProtectionIndex: Integer;
property Formula: WideString;
property RichText: TXLSXRichText;
property Locked: Boolean;
property FormulaHidden: Boolean;
property FormattedText: WideString;
property TaggedText: WideString;
end;
| Destroy | Uvoľňuje stav inštancie a uvoľňuje vlastnené prostriedky |
| SetWorkbook | Zapisuje odkaz na vlastniaci zošit, takže operácie ako vyhľadávanie formátu čísla môžu znova použiť zdieľané fondy zošita v čase O(1) |
| SetArrayRoot / SetArrayRange | Nastavuje značky ArrayRoot* a
ArrayLast* pre kotvy pretečenia maticového vzorca, takže jedna
koreňová bunka mapuje všetky závislé bunky v rovnakom obdĺžniku |
| Workbook | Spätný odkaz na vlastniaci TXLSXWorkbook nastavený pri vytváraní bunky pracovného hárka |
| ArrayRootRow / ArrayRootCol / ArrayLastRow / ArrayLastCol | Metaúdaje pretečenia CSE len na čítanie používané pri obojsmernom ukladaní/načítaní pre obdĺžniky maticových vzorcov |
| Row | Index riadka od 1 |
| Col | Index stĺpca od 1 (1 = A, 2 = B, ...) |
| Value | Hodnota bunky ako Variant. Podporované sú reťazce, čísla, boolovské hodnoty
a TDateTime. Nastavenie TDateTime automaticky
vyberie vstavaný dátumový cellXf (XlsxXfIndexDate), keď
nie je nastavený žiadny explicitný FormatIndex |
| FormatIndex | Index do cellXfs v xl/styles.xml
Ponechajte na 0 pre predvolený štýl. Index 1
je vyhradený pre vstavaný formát dátumu (numFmtId 14,
m/d/yyyy). Keď je nastavený, FormatIndex má
prednosť pred FontIndex vo vygenerovanej bunke |
| FontIndex | Index od 1 do
TXLSXWorkbook.Fonts
Ponechajte na 0, aby sa zdedil predvolený Calibri 11 |
| FillIndex | Index od 1 do TXLSXWorkbook.Fills Pozri TXLSXFill |
| BorderIndex | Index od 1 do TXLSXWorkbook.Borders Pozri TXLSXBorder |
| NumberFormatIndex | Index od 1 do
TXLSXWorkbook.NumberFormats
Použite toto pre vlastné formátovacie kódy ako '$#,##0.00'
alebo 'yyyy-mm-dd hh:mm:ss' |
| NumberFormat | Pohodlná vlastnosť pre vlastný text formátu čísla
Čítanie vracia formátovací kód z fondu formátov čísiel zošita,
keď naň odkazuje NumberFormatIndex; priradenie reťazca
nájde alebo pridá formát a aktualizuje NumberFormatIndex |
| AlignmentIndex | Index od 1 do TXLSXWorkbook.Alignments Pozri TXLSXAlignment pre nastavenia horizontálneho / vertikálneho zarovnania / zalomenia / odsadenia / rotácie pre každý záznam |
| RichText | Voliteľný vlastnený objekt
TXLSXRichText
Keď je nastavený, bunka prechádza cez tabuľku zdieľaných reťazcov ako
viacnásobný záznam <si> namiesto obyčajného reťazca;
priradenie nil obnoví Variant hodnotu bunky |
| Precedence | Keď je na tej istej bunke nastavených niekoľko vlastností *Index,
strana SaveAs vyberie zodpovedajúci cellXf v tomto poradí: FormatIndex >
FontIndex > FillIndex > BorderIndex >
NumberFormatIndex |
| Formula | Voliteľný text vzorca (bez úvodného =)
Keď je nastavený, SaveAs vygeneruje podradený prvok <f>
spolu s hodnotou bunky a Open ho prečíta späť |
| ProtectionIndex | Index do fondu ochrany zošita. Pohodlné vlastnosti
Locked a FormulaHidden udržiavajú tento index
automaticky pre bežné použitie |
| Locked | Keď je True (predvolené pre každú novú bunku),
bunka je chránená, keď je chránený pracovný hárok. Nastavením na
False povolíte úpravu konkrétnej bunky v chránenom hárku
Zapisuje atribút <protection locked="0"/>
do cellXf bunky, ak sa líši od predvoleného |
| FormulaHidden | Keď je True, riadok vzorcov nezobrazuje
vzorec bunky, kým je hárok chránený. Predvolená hodnota je
False. Vygeneruje
<protection hidden="1"/> v zodpovedajúcom
cellXf |
| FormattedText | WideString len na čítanie. Vracia hodnotu bunky formátovanú ako reťazec podľa jej aktívneho vlastného alebo vstavaného kódu formátu čísla |
| TaggedText | WideString len na čítanie. Vracia formátovaný reťazec bunky obsahujúci formátovacie značky podobné HTML/XML pre štýly formátovaného textu, ak je to použiteľné |
type
TXLSXCells = class
constructor Create(AOwnerSheet: TXLSXWorksheet);
destructor Destroy; override;
procedure Clear;
function HasCell(ARow, ACol: Integer): Boolean;
function Remove(ARow, ACol: Integer): Boolean;
property Item[ARow, ACol: Integer]: TXLSXCell; default;
property Count: Integer;
property CellByIndex[Index: Integer]: TXLSXCell;
end;
| Create | Konštruuje kolekciu buniek naviazanú na jeden vlastniaci pracovný hárok |
| Destroy | Uvoľňuje všetky bunky vlastnené kolekciou |
| Item[Row, Col] | Vracia bunku na daných súradniciach od 1,
pričom pri prvom prístupe vytvorí prázdny TXLSXCell. Deklarované ako
predvolená vlastnosť, takže Cells[Row, Col] funguje ako skratka |
| Count | Počet aktuálne uložených buniek |
| CellByIndex[i] | Bunka na danom indexe vloženia od 0. Užitočné pre sekvenčné prechádzanie bez predchádzajúcej znalosti vyplnených riadkov a stĺpcov |
| Remove | Vymaže jednu existujúcu bunku na súradnici a vráti, či k odstráneniu skutočne došlo |
| HasCell(Row, Col) | Vracia True, ak bunka na daných súradniciach už existuje
Použite toto, aby ste predišli vytvoreniu prázdnej bunky ako
vedľajšieho efektu Item[Row, Col] |
| Clear | Odstráni a uvoľní každú bunku v kolekcii |
var
ws: TXLSXWorksheet;
i: Integer;
begin
ws := Workbook.Sheets.Add('Demo');
ws.Cells.Item[1, 1].Value := 'Hello';
ws.Cells.Item[1, 2].Value := 123.45;
ws.Cells.Item[2, 1].Value := Now; // renders as a date
ws.Cells.Item[2, 2].Formula := 'SUM(B1:B1)';
for i := 0 to ws.Cells.Count - 1 do
WriteLn(ws.Cells.CellByIndex[i].Row, ',',
ws.Cells.CellByIndex[i].Col);
end;