Zellkommentar-Unterstützung auf einem
TXLSXWorksheet. Jeder
Eintrag verbindet einen Autor und einen freien Textkörper mit einer Zelle. SaveAs gibt
xl/commentsN.xml mit einer deduplizierten Autorenliste und einem
begleitenden
xl/drawings/vmlDrawingN.vml aus, damit Excel
die Kommentarsprechblasen rendern kann; Open liest die Kommentar-XML zurück in die
Sammlung. Deklariert in
lxHandleX
TXLSXComment-Deklaration
type
TXLSXComment = class
constructor Create(ARow, ACol: Integer; const AAuthor, AText: WideString);
property Row: Integer;
property Col: Integer;
property Author: WideString;
property Text: WideString;
end;
TXLSXComment-Elemente
| Row, Col |
1-basiert Zelle anchor coordinates |
| Author |
Autorenname des Kommentars. Unterschiedliche Namen werden einmalig in die arbeitsmappenweite <authors>-Liste geschrieben und über authorId referenziert |
| Text |
Kommentartext. Wird beim SaveAs als ein einzelner <text><r><t>-Lauf geschrieben und beim Open aus einem oder mehreren Läufen zusammengeführt |
TXLSXComments-Deklaration
type
TXLSXComments = class
constructor Create;
destructor Destroy; override;
function Add(ARow, ACol: Integer; const AText: WideString): Integer; overload;
function Add(ARow, ACol: Integer; const AText, AAuthor: WideString): Integer; overload;
function IndexOfCell(ARow, ACol: Integer): Integer;
function FindAt(ARow, ACol: Integer): TXLSXComment;
function DeleteAt(ARow, ACol: Integer): Boolean;
function DeleteInRange(ARow1, ACol1, ARow2, ACol2: Integer): Integer;
procedure Delete(Index: Integer);
procedure Clear;
property Count: Integer;
property Items[Index: Integer]: TXLSXComment; default;
end;
TXLSXComments-Elemente
| Add(Row, Col, Text) |
Fügt einen Kommentar ohne Autor hinzu (leerer Autor). Gibt den neuen Eintragsindex zurück |
| Add(Row, Col, Text, Author) |
Fügt einen Kommentar mit explizitem Autorennamen hinzu |
| IndexOfCell(Row, Col) |
Gibt den 0-basierten Index des an der 1-basierten Zellkoordinate verankerten Kommentars zurück oder -1, wenn die Zelle keinen Kommentar hat |
| FindAt(Row, Col) |
Gibt das an der Zelle verankerte Kommentarobjekt zurück oder nil, wenn kein Kommentar vorhanden ist |
| DeleteAt(Row, Col) |
Löscht den an der Zelle verankerten Kommentar und gibt True zurück; gibt False zurück, wenn kein passender Kommentar vorhanden ist |
| DeleteInRange(Row1, Col1, Row2, Col2) |
Löscht jeden Kommentar, dessen Anker innerhalb des einschließenden 1-basierten Zellbereichs liegt, und gibt die Anzahl der entfernten Einträge zurück. Umgekehrte Koordinaten werden akzeptiert |
| Delete(Index) |
Löscht den Kommentar am angegebenen 0-basierten Sammlungseintrag |
| Count |
Anzahl der Kommentare im Arbeitsblatt |
| Items[Index] |
Kommentar am angegebenen 0-basierten Index. Als Standard-Property deklariert |
| Clear |
Entfernt und gibt jeden Kommentar frei |
Beispiel
var
ws: TXLSXWorksheet;
begin
ws := Workbook.Sheets.Add('Reviews');
ws.Cells.Item[1, 1].Value := 'Q1 revenue';
ws.AddComment(1, 1, 'Numbers still pending review', 'Kevin');
// Equivalent through the collection:
ws.Comments.Add(2, 1, 'Auto-generated draft');
if ws.Comments.IndexOfCell(1, 1) >= 0 then
ws.Comments.DeleteAt(1, 1);
end;
Siehe auch