如何使用C#在excel中插入带图片的注释
本文关键字:注释 插入 何使用 excel | 更新日期: 2023-09-27 18:29:19
正如我在标题中所描述的,如何使用C#将图片作为注释插入Excel?请提供一个示例代码或一些参考文件。以下是我的代码:
using Excel=MicroSoft.Office.Interop.Excel;
publice void ExcelEdit(string Path)
{
Excel.Application xlApp;
Excel.WorkBook xlWorkBook;
Excel.WorkSheet xlWorkSheet;
Excel.Range myRange;
xlApp=new Excel.ApplicationClass();
xlWorkBook=xlApp.WorkBooks.Open(Path, misValue, misValue,misValue, misValue,misValue, misValue,misValue, misValue,misValue, misValue,misValue, misValue,misValue, misValue)
xlApp.Visable=True;
xlWorkSheet=(Excel.WorkSheet)xlWorkBook.Sheets.get_Item(1);
myRange=WorkSheet.Range[WorkSheet.Cells[1,1],WorkSheet.Cells[1,1]);
xlWorkSheet.Cells[1,1]=InstertPictureComment(myRange,Path);
myRange=WorkSheet.Range[WorkSheet.Cells[1,2],WorkSheet.Cells[1,2]);
xlWorkSheet.Cells[1,1]=InstertPictureComment(myRange, Path);
}
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时,消息框显示"在xxx中找到了不可读的内容。"
怎么处理我的代码!!
这个问题似乎重复了用C#插入图片注释的问题。好的,而用注释复制内容失败
我刚刚在那里发布了一个答案。在此处复制相同的答案。
我已经更正了代码,以便它编译
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标志来决定是否在清理期间退出实例。
我希望这能有所帮助。