/// <summary> /// Adds a comment to the top left cell of the range /// </summary> /// <param name="cell">The cell</param> /// <param name="Text">The comment text</param> /// <param name="author">Author</param> /// <returns>The comment</returns> public ExcelComment Add(ExcelRangeBase cell, string Text, string author) { var elem = CommentXml.CreateElement("comment", ExcelPackage.schemaMain); int ix = _comments.IndexOf(ExcelAddress.GetCellID(Worksheet.SheetID, cell._fromRow, cell._fromCol)); //Make sure the nodes come on order. if (ix < 0 && (~ix < _comments.Count)) { ix = ~ix; var preComment = _comments[ix] as ExcelComment; preComment._commentHelper.TopNode.ParentNode.InsertBefore(elem, preComment._commentHelper.TopNode); } else { CommentXml.SelectSingleNode("d:comments/d:commentList", NameSpaceManager).AppendChild(elem); } elem.SetAttribute("ref", cell.Start.Address); ExcelComment comment = new ExcelComment(NameSpaceManager, elem, cell); comment.RichText.Add(Text); if (author != "") { comment.Author = author; } _comments.Add(comment); return(comment); }
private void AddCommentsFromXml() { var lst = new List <IRangeID>(); foreach (XmlElement node in CommentXml.SelectNodes("//d:commentList/d:comment", NameSpaceManager)) { var comment = new ExcelComment(NameSpaceManager, node, new ExcelRangeBase(Worksheet, node.GetAttribute("ref"))); lst.Add(comment); } _comments = new RangeCollection(lst); }
/// <summary> /// Removes the comment /// </summary> /// <param name="comment">The comment to remove</param> public void Remove(ExcelComment comment) { ulong id = ExcelAddress.GetCellID(Worksheet.SheetID, comment.Range._fromRow, comment.Range._fromCol); int ix = _comments.IndexOf(id); if (ix >= 0 && comment == _comments[ix]) { comment.TopNode.ParentNode.RemoveChild(comment.TopNode); //Remove VML comment._commentHelper.TopNode.ParentNode.RemoveChild(comment._commentHelper.TopNode); //Remove Comment Worksheet.VmlDrawingsComments._drawings.Delete(id); _comments.Delete(id); } else { throw (new ArgumentException("Comment does not exist in the worksheet")); } }