文档半岛外围网上直营>>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);
}
}
}
点击复制

QQ交谈
在线咨询

渝公网安备
50010702500608号

客服热线