插入带有C#的图片注释Ok,而复制带有注释的内容失败
本文关键字:注释 复制 失败 Ok 插入 | 更新日期: 2023-09-27 18:29:12
我正在使用C#开发excel,但在excel中插入图片注释时遇到了一些问题。这是我的代码:
public void InstertPictureComment(Excel.Range myrange, string picturepath)
{
myrange.ClearComment();
myrange.AddComment();
myrange.Comment.Shape.Fill.UserPicture(picturepath);
myrange.Comment.Shape.Width=400;
myrange.Comment.Shapes.Height=300;
}
上面的代码运行良好,我可以成功地插入图片注释。然而,问题出现了。将内容(包括我刚刚插入的图片注释)复制到其他excel工作表===>保存excel,并关闭excel应用程序===>重新打开excel,并显示一个消息框,告诉"excel在xxxxx中发现无法读取的内容"
我的代码出了什么问题?或者这是一个优秀的问题?
我已经更正了代码,以便它编译
public void InstertPictureComment(Excel.Range myrange, string picturepath)
{
myrange.Cells.ClearComments();
myrange.AddComment();
myrange.Comment.Shape.Fill.UserPicture(picturepath);
myrange.Comment.Shape.Width = 400;
myrange.Comment.Shape.Height = 300;
}
问题的一部分在于Excel。使用您的代码,您可能正在创建Excel的新应用程序实例。Excel无法跨应用程序实例复制对象。
如果在同一应用程序实例中打开另一个工作簿,则对象将被复制。跨应用程序实例复制数据的唯一方法是使用"特殊粘贴"功能。
您应该获取现有的Excel应用程序实例。如果它不在那里,那么你可以创建它。
private Excel.Application GetExcelInstance()
{
Excel.Application instance = null;
try
{
instance = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
}
catch (System.Runtime.InteropServices.COMException ex)
{
instance = new Excel.Application();
appCreatedExcelInstance = true;
}
return instance;
}
您可以使用appCreatedExcelInstance标志来决定是否在清理期间退出实例。