[]
批注是指显示为对话或讨论的电子表格评论。 这些评论提供了一个回复框,允许用户对导致对话的评论进行回复。
GcExcel 允许您通过ICommentThreaded 接口添加批注。 特定工作表上的批注集合中的每条批注由 ICommentThreaded 对象表示。 评论按行然后列的顺序存储在集合中。
要为工作表单元格创建批注,您可以使用 IRange 接口的 addCommentThread 方法。 此方法接受评论文本和作者姓名作为其参数。
// Create threaded comment for range C3.
ICommentThreaded commentThreadedC3 = worksheet.getRange("C3").addCommentThreaded("Range C3's threaded comment","Bill");
// Add a reply for commentThreadedC3.
ICommentThreaded Reply = commentThreadedC3.addReply("Range C3's reply","Even");
要添加对批注的回复,您可以使用ICommentThreaded 的addReply 方法 . 如果批注是顶级批注,则该方法将回复添加到回复集合中。 如果批注是回复,则该方法将回复添加到父级的回复集合。 可以使用 getReplies 方法获取回复集合。
// Add replies for commentThreadedC3.
ICommentThreaded Reply_1 = commentThreadedC3.addReply("Mark's reply", "Mark");
ICommentThreaded Reply_2 = commentThreadedC3.addReply("Bill's reply", "Bill");
要修改批注,您可以使用批注的 setText 方法来设置新字符串。
// Sets a new text for commentTHreadedC3.
commentThreadedC3.setText("New Content");
// Delete Reply_1
Reply_1.delete();
// Sets a new text for Reply_2.
Reply_2.setText("Bill's new reply");
GcExcel Java 提供了各种属性,您可以使用这些属性读取批注及其属性,例如日期戳、作者等。要获取工作表上的批注的整个集合,您可以使用 IWorksheet.getCommentsThreaded 方法,而可以使用 get 方法从 ICommentThreaded 集合中获取特定的批注。您也可以 使用 getCount 方法获取工作表上的评论总数。如果批注是回复,ICommentsThreaded 接口还提供 getParent 方法来获取父级。 要阅读评论的日期戳或作者,您可以使用 DateTime 和 getAuthor 方法。 您还可以获取工作表中批注的 下一个 或 上一个 评论。
// Get a specific comment
System.out.println("Get a specific comment : " + worksheet.getCommentsThreaded().get(0).getText());
// Get replies count
System.out.println("Replies Count : " + commentThreadedC3.getReplies().getCount());
// Get all replies on a specific comment
for (int i = 0; i < commentThreadedC3.getReplies().getCount(); i++)
System.out.println("Get replies text[" + i + "] : " + commentThreadedC3.getReplies().get(i).getText());
// Get author of comment
System.out.println("Author Name : " + commentThreadedC3.getAuthor().getName().toString());
// Get collection of threaded comments
System.out.println("Get collection of threaded comments : " + worksheet.getCommentsThreaded().getCount());
// Get Date stamp of comment
Date date = commentThreadedC3.DateTime();
DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
String strDate = dateFormat.format(date);
System.out.println("Date of Comment : " + strDate);
// Get Time stamp of comment
Date time = commentThreadedC3.DateTime();
DateFormat timeFormat = new SimpleDateFormat("hh:mm:ss");
String strTime = timeFormat.format(time);
System.out.println("Time of Comment : " + strTime);
// Get C3's next comment
System.out.println("C3's next comment : " + commentThreadedC3.next().getText());
// Get D3's previous comment
System.out.println("D3's previous comment : " + commentThreadedD3.previous().getText());
// Get parent of a reply
System.out.println("Parent of Reply_1 : " + Reply_1.getParent().getText());
System.out.println("Parent of Reply_2 : " + Reply_2.getParent().getText());
以下是经过上述处理后在控制台上显示的结果:
GcExcel提供了setIsResolved方法来设置批注的解析状态。 将此方法设置为 true 还意味着,批注被禁用,用户无法编辑或回复该评论。
commentThreadedC3.setIsResolved(true);
要删除批注和与该评论关联的回复,您可以使用 ICommentThreaded.delete 方法。如果目标 CommentThreaded 对象是顶级注释,则此方法删除指定的注释。但是,如果目标评论是评论线程之一中的回复,则此方法会从父评论的回复集合中删除该回复。 您还可以使用IRange.clearCommentsThreaded 方法清除一系列单元格中的批注。
// Delete a single cell threaded comment.
commentThreadedE3.delete();
// Clear a range of cells threaded comment.
worksheet.getRange("F3:G4").clearCommentsThreaded();
要设置评论的作者,您可以使用 IAuthor 接口的 setName 方法。
//Set author name
IAuthor author = commentThreadedC3.getAuthor();
author.setName("Alex");