2014-11-06 238 views
1

正如我在標題中所描述的,如何使用C#將圖片作爲註釋插入到Excel中? 請提供樣本代碼或一些參考文件。 以下是我的代碼:如何使用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時,messagebox顯示「xxx中的不可讀內容已找到。」

如何處理我的代碼!

回答

0

的問題似乎是Insert picture comment with C# Ok while copy content with comments fail

我剛纔公佈答案有重複。在這裏複製相同的答案。

我已經糾正了代碼,以便它編譯問題

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標誌來決定是否在清理期間退出實例。

我希望這會有所幫助。

+0

謝謝你的親切指導。但我不認爲這是根本原因。當我只插入1張照片評論時,確實如此。當我插入幾張照片評論時,每張照片都包含不同的照片,則會出現問題。更重要的是,首先插入的圖片評論的副本是好的,而其他人則不是。你有什麼想法嗎? – user3799965 2014-11-07 02:36:52

相關問題