Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 向使用OpenXML创建的电子表格文档中的单元格添加注释_C#_Openxml_Xlsx - Fatal编程技术网

C# 向使用OpenXML创建的电子表格文档中的单元格添加注释

C# 向使用OpenXML创建的电子表格文档中的单元格添加注释,c#,openxml,xlsx,C#,Openxml,Xlsx,我正在使用openXML创建一个xlsx文件。我想给一些行单元格添加注释。是否有任何方法向单元格添加注释。或者我应该使用Microsoft.Office.Interop向excel单元格添加注释吗?我使用了,它允许您加载excel或Word文件,然后发出C代码以生成准确的文件 然后我创建了一个带有注释的文件。首先,我尝试了两条注释,但它生成的代码量使我很难判断是什么 结果并不好看。你可以减少很多,也许可以消除一些。但这是一种了解引擎盖下发生了什么的方法 你也可以跳过所有这些,直接使用它,看看接下

我正在使用openXML创建一个xlsx文件。我想给一些行单元格添加注释。是否有任何方法向单元格添加注释。或者我应该使用Microsoft.Office.Interop向excel单元格添加注释吗?

我使用了,它允许您加载excel或Word文件,然后发出C代码以生成准确的文件

然后我创建了一个带有注释的文件。首先,我尝试了两条注释,但它生成的代码量使我很难判断是什么

结果并不好看。你可以减少很多,也许可以消除一些。但这是一种了解引擎盖下发生了什么的方法

你也可以跳过所有这些,直接使用它,看看接下来会发生什么,你可以想象为什么有人觉得有必要让它变得更简单

关键步骤是:

创建新的注释 创建一个新的评论列表?!!! 创建一个新注释,该注释具有指示其所属单元格的引用属性 创建新的注释文本 创建一个新的运行 将运行追加到注释文本 将CommentText附加到注释中 将注释附加到CommentsList 将CommentsList附加到注释中 将工作表CommentSpart.Comments属性设置为Comments


不确定这在当前版本中是否有效,但看看这个heps:在文档难以找到时是否有帮助。它获取一个现有的电子表格并生成生成该电子表格的代码。您可以将注释添加到电子表格中,通过该工具运行注释,并查看它生成的代码。这有点像录制VBA宏并查看它以查看要调用的属性和方法。我从来没有这样做过。互操作对生物是有害的。实际上,链接到@EdneyHold的问题说明了几乎相同的事情,并提供了一些建议,使所有这些都更易于管理。我无法使用上述代码生成注释。是否有其他工作示例,比如仅仅理解如何使用openxml放置注释。当我尝试使用@EdneyHold时,@EdneyHold给出的链接出现excel错误,但没有成功放置注释。最后,我们得到了一个工作示例,在该示例中,我们至少可以放置一条注释,对于更多注释,我们将需要单元格行id和列id。在上面@EdneyHold注释的链接中也可以使用相同的方法。谢谢你们的快速帮助。
private void GenerateWorksheetCommentsPart1Content(WorksheetCommentsPart worksheetCommentsPart1)
{
    Comments comments1 = new Comments(){ MCAttributes = new MarkupCompatibilityAttributes(){ Ignorable = "xr" }  };
    comments1.AddNamespaceDeclaration("mc", "http://schemas.openxmlformats.org/markup-compatibility/2006");
    comments1.AddNamespaceDeclaration("xr", "http://schemas.microsoft.com/office/spreadsheetml/2014/revision");

    Authors authors1 = new Authors();
    Author author1 = new Author();
    author1.Text = "Hannen, Scott";

    authors1.Append(author1);

    CommentList commentList1 = new CommentList();

    Comment comment1 = new Comment(){ Reference = "B3", AuthorId = (UInt32Value)0U, ShapeId = (UInt32Value)0U };
    comment1.SetAttribute(new OpenXmlAttribute("xr", "uid", "http://schemas.microsoft.com/office/spreadsheetml/2014/revision", "{811649EF-4CB5-4311-BE14-228133003BE4}"));

    CommentText commentText1 = new CommentText();

    Run run1 = new Run();

    RunProperties runProperties1 = new RunProperties();
    FontSize fontSize3 = new FontSize(){ Val = 9D };
    Color color3 = new Color(){ Indexed = (UInt32Value)81U };
    RunFont runFont1 = new RunFont(){ Val = "Tahoma" };
    RunPropertyCharSet runPropertyCharSet1 = new RunPropertyCharSet(){ Val = 1 };

    runProperties1.Append(fontSize3);
    runProperties1.Append(color3);
    runProperties1.Append(runFont1);
    runProperties1.Append(runPropertyCharSet1);
    Text text1 = new Text(){ Space = SpaceProcessingModeValues.Preserve };
    text1.Text = "This is my comment!\nThis is line 2!\n";

    run1.Append(runProperties1);
    run1.Append(text1);

    commentText1.Append(run1);

    comment1.Append(commentText1);

    commentList1.Append(comment1);

    comments1.Append(authors1);
    comments1.Append(commentList1);

    worksheetCommentsPart1.Comments = comments1;
}