如何使用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#在excel中插入带图片的注释

这个问题似乎重复了用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标志来决定是否在清理期间退出实例。

我希望这能有所帮助。