title: How to insert a picture in to Excel from C# app?
body: <p>I am trying to insert a picture into Excel Spread Sheet using my C# application.</p>
  
  <p>I have used the following as my source. <a href="http://csharp.net-informations.com/excel/csharp-insert-picture-excel.htm" rel="nofollow noreferrer">http://csharp.net-informations.com/excel/csharp-insert-picture-excel.htm</a></p>
  
  <p>This whole line is underlined in blue.</p>
  
  <pre><code> xlWorkSheet.Shapes.AddPicture("C:\\pic.JPG", Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue, 50, 50, 300, 45); 
  </code></pre>
  
  <p>My Code:</p>
  
  <pre><code>private void btnWriteSpreedSheet_Click(object sender, EventArgs e)
  {
      Excel.Application xlApp;
      Excel.Workbook xlWorkBook;
      Excel.Worksheet xlWorkSheet;
      object misValue = System.Reflection.Missing.Value;
  
      xlApp = new Excel.ApplicationClass();
      xlWorkBook = xlApp.Workbooks.Add(misValue);
      xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
  
      //xlWorkSheet.SetBackgroundPicture("C:/Users/Shaun/Documents/Visual Studio 2010/Projects/TestXMLToEXCEL/TestXMLToEXCEL/bin/Debugpic.JPG"); //
  
      //add some text 
      xlWorkSheet.Cells[1, 1] = "http://csharp.net-informations.com";
      xlWorkSheet.Cells[2, 1] = "Adding picture in Excel File";
  
      xlWorkSheet.Shapes.AddPicture("C:\\pic.JPG", Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue, 50, 50, 300, 45); //C:\\csharp-xl-picture.JPG
  
       xlWorkBook.SaveAs("csharp.net-informations.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
      xlWorkBook.Close(true, misValue, misValue);
      xlApp.Quit();
  
      releaseObject(xlApp);
      releaseObject(xlWorkBook);
      releaseObject(xlWorkSheet);
  
      MessageBox.Show ("File created !");
  }
  
  private void releaseObject(object obj)
  {
      try
      {
          System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
          obj = null;
      }
      catch (Exception ex)
      {
          obj = null;
          MessageBox.Show("Unable to release the Object " + ex.ToString());
      }
      finally
      {
          GC.Collect();
      }
  }
  </code></pre>
  
  <hr>
  
  <p>Error messages:</p>
  
  <blockquote>
    <p>The best overloaded method match for
    'Microsoft.Office.Interop.Excel.Shapes.AddPicture(string,
    Microsoft.Office.Core.MsoTriState, Microsoft.Office.Core.MsoTriState,
    float, float, float, float)' has some invalid arguments</p>
    
    <p>The type 'Microsoft.Office.Core.MsoTriState' is defined in an assembly
    that is not referenced. You must add a reference to assembly 'office,
    Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'.</p>
    
    <p>Argument 2: cannot convert from 'Microsoft.Office.Core.MsoTriState
    [c:\users\shaun\documents\visual studio
    2010\Projects\TestXMLToEXCEL\TestXMLToEXCEL\CreateSpreadSheet.cs]' to
    'Microsoft.Office.Core.MsoTriState'</p>
    
    <p>Argument 3: cannot convert from 'Microsoft.Office.Core.MsoTriState
    [c:\users\shaun\documents\visual studio
    2010\Projects\TestXMLToEXCEL\TestXMLToEXCEL\CreateSpreadSheet.cs]' to
    'Microsoft.Office.Core.MsoTriState'</p>
  </blockquote>
  
  <hr>
  
  <p>My References:</p>
  
  <pre><code>using Excel = Microsoft.Office.Interop.Excel;
  using Microsoft.Office.Core;
  using Microsoft.Office;
  using System.Xml;
  </code></pre>