文档彩票走势图>>Aspose中文文档>>删除所有或特定作者的评论
删除所有或特定作者的评论
Aspose.Words是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。
Aspose API支持流行文件格式处理,并允许将各类文档导出或转换为固定布局文件格式和最常用的图像/多媒体格式。
使用Aspose.Words
以下代码示例展示了如何删除文档中的所有注释:
// For complete examples and data files, please go to //github.com/aspose-words/Aspose.Words-for-.NET static void RemoveComments(Document doc) { // Collect all comments in the document NodeCollection comments = doc.GetChildNodes(NodeType.Comment, true); // Remove all comments. comments.Clear(); }
点击复制
以下代码示例展示了如何删除特定作者的评论:
// For complete examples and data files, please go to //github.com/aspose-words/Aspose.Words-for-.NET static void RemoveComments(Document doc, string authorName) { // Collect all comments in the document NodeCollection comments = doc.GetChildNodes(NodeType.Comment, true); // Look through all comments and remove those written by the authorName author. for (int i = comments.Count - 1; i >= 0; i--) { Comment comment = (Comment)comments[i]; if (comment.Author == authorName) comment.Remove(); } }
点击复制
使用 Open XML SDK
需要添加的命名空间:
using System; using System.Collections.Generic; using System.IO; using System.Linq; using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Wordprocessing; using NUnit.Framework;
点击复制
以下代码示例展示了如何删除文档中的注释:
public void DeleteCommentsByAllOrASpecificAuthorFeature() { RemoveComments(""); } private void RemoveComments(string author) { // Get an existing Wordprocessing document. using (WordprocessingDocument document = WordprocessingDocument.Open(MyDir + "Comments.docx", true)) { WordprocessingCommentsPart commentPart = document.MainDocumentPart.WordprocessingCommentsPart; // If no "WordprocessingCommentsPart" exists, there can be no comments. // Stop execution and return from the method. if (commentPart == null) return; // Create a list of comments by the specified author. // If the author name is empty, then list all authors. List<Comment> commentsToDelete = commentPart.Comments.Elements<Comment>().ToList(); if (!String.IsNullOrEmpty(author)) { commentsToDelete = commentsToDelete.Where(c => c.Author == author).ToList(); } IEnumerable<string> commentIds = commentsToDelete.Select(r => r.Id.Value); foreach (Comment c in commentsToDelete) c.Remove(); // Save changes to the comments part. commentPart.Comments.Save(); Document doc = document.MainDocumentPart.Document; // Delete the "CommentRangeStart" for each deleted comment in the main document. List<CommentRangeStart> commentRangeStartToDelete = doc.Descendants<CommentRangeStart>().Where(c => commentIds.Contains(c.Id.Value)).ToList(); foreach (CommentRangeStart c in commentRangeStartToDelete) c.Remove(); // Delete the "CommentRangeEnd" for each deleted comment in the main document. List<CommentRangeEnd> commentRangeEndToDelete = doc.Descendants<CommentRangeEnd>().Where(c => commentIds.Contains(c.Id.Value)).ToList(); foreach (CommentRangeEnd c in commentRangeEndToDelete) c.Remove(); // Delete the "CommentReference" for each deleted comment in the main document. List<CommentReference> commentRangeReferenceToDelete = doc.Descendants<CommentReference>().Where(c => commentIds.Contains(c.Id.Value)).ToList(); foreach (CommentReference c in commentRangeReferenceToDelete) c.Remove(); using (Stream stream = File.Open(ArtifactsDir + "Remove comments - OpenXML.docx", FileMode.CreateNew)) { doc.Save(stream); } } }
点击复制