Поддержка комментариев к ячейкам на
TXLSXWorksheet. Каждый элемент прикрепляет автора и текст в произвольной форме к ячейке. SaveAs формирует
xl/commentsN.xml с дедублированным списком авторов и сопутствующий файл
xl/drawings/vmlDrawingN.vml , чтобы Excel мог отображать всплывающие окна комментариев; Open считывает XML комментариев обратно в коллекцию. Объявлено в
lxHandleXОбъявление TXLSXComment
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
| Row, Col | 1-основанный ячейка anchor coordinates |
| Author | Имя автора комментария. Разные имена записываются один раз в список <authors> на уровне Workbook и ссылаются через authorId authorId |
| Text | Текст комментария. При SaveAs записывается как один run
<text><r><t> , а при Open сворачивается из одного или нескольких runs |
Объявление TXLSXComments
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
| Add(Row, Col, Text) | Добавляет неподписанный комментарий (пустой author). Возвращает новый индекс записи |
| Add(Row, Col, Text, Author) | Добавляет комментарий с явным именем автора |
| IndexOfCell(Row, Col) | Возвращает индекс комментария с нумерацией от 0, привязанного к координате ячейки с нумерацией от 1, или -1, когда у ячейки нет комментария -1 when the cell has
no comment |
| FindAt(Row, Col) | Возвращает объект комментария, привязанный к ячейке, или nil, когда комментарий отсутствует
nil when no comment is present |
| DeleteAt(Row, Col) | Удаляет примечание, привязанное к ячейке, и возвращает
True; returns False Удаляет комментарий, привязанный к ячейке, и возвращает True; возвращает False, когда подходящего комментария нет |
| DeleteInRange(Row1, Col1, Row2, Col2) | Удаляет каждый комментарий, чья привязка находится внутри включающего 1-based диапазона ячеек, и возвращает число удаленных. Обратные координаты допускаются |
| Delete(Index) | Удаляет комментарий по указанному индексу коллекции, начиная с 0 |
| Count | Количество комментариев на листе |
| Items[Index] | Комментарий по указанному индексу, начиная с 0. Объявлено как свойство по умолчанию |
| Clear | Удаляет и освобождает каждый комментарий |
Пример
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;
См. также