2014-11-06 79 views
3

我正在從數據表中生成一個Excel表單。我可以根據需要將文本添加到不同的單元格中。但我沒有關於如何添加圖片到指定範圍內的任何想法..使用C插入圖像到Excel單元格中#

 Excel.Application oApp = new Excel.Application(); 
     oApp.Application.Workbooks.Add(Type.Missing); 

     oApp.Range["B2", "C4"].Merge(Type.Missing); 

在這裏,我想添加圖片..

我試圖像

 System.Drawing.Image imgg = System.Drawing.Image.FromFile("c:\\D.jpg"); 

現在怎麼我可以添加/複製我的imgg到這個範圍內?例如

App.Range["B2", "C4"] 
+0

我搜索,但沒有找到適合我的正確方法...每一個我找到解決方案添加圖像到工作表對象 – user3452210 2014-11-06 10:48:42

+0

@ user3452210你找到你的答案了嗎? – 2014-11-10 17:32:53

+0

我沒有得到確切的答案..但我跟着@Anonymous Mohit的答案xlWorkSheet.Shapes.AddPicture(「C:\\ sample.jpg」,Microsoft.Office.Core.MsoTriState.msoFalse,Microsoft.Office.Core .MsoTriState.msoCTrue,50,50,300,45)..並根據範圍設置左,上,右,底值... – user3452210 2014-11-11 07:07:30

回答

4

可以得到受益與以下

using System; 
using System.Windows.Forms; 
using Excel = Microsoft.Office.Interop.Excel; 

namespace WindowsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      Excel.Application xlApp ; 
      Excel.Workbook xlWorkBook ; 
      Excel.Worksheet xlWorkSheet ; 
      object misValue = System.Reflection.Missing.Value; 

      xlApp = new Excel.Application(); 
      xlWorkBook = xlApp.Workbooks.Add(misValue); 
      xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); 

      //add some text 
      xlWorkSheet.Cells[1, 1] = "Text1"; 
      xlWorkSheet.Cells[2, 1] = "Text2"; 

      xlWorkSheet.Shapes.AddPicture("C:\\sample.jpg", Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue, 50, 50, 300, 45); 


      xlWorkBook.SaveAs("MyExcelFile.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(); 
      } 
     } 

    } 
} 
0

您是否嘗試過給與excelpicture位置?

var picture = worksheet.Drawings.AddPicture("image_name", imgg); 
picture.SetPosition(int row,int rowoffsetpixels,int column,int coloumoffsetpixels);//position for the image 
0

您可以將圖像添加到很容易(假設您正在使用的Microsoft.Office.Interop.Excel裝配基準,在C#),這樣您的Excel電子表格:

private Worksheet _xlSheet; 
private Image _platypusLogo; 
. . . 
private void AddImage() 
{ 
    Clipboard.SetDataObject(_platypusLogo, true); 
    var cellRngImg = (Range)_xlSheet.Cells[IMAGE_ROW, IMAGE_COLUMN]; 
    _xlSheet.Paste(cellRngImg, _platypusLogo); 
} 

注意「IMAGE_ROW」和「IMAGE_COLUMN」是int常量,或者如果您想要在史蒂夫麥康奈爾的Code Complete中通過關於使除0和1之外的所有數字常量化的方法飛行,則可以使用硬編碼整數。

圖像需要分配給_platypusLogo。如果您使用的是C#實用程序應用程序來動態生成Excel電子表格,則可以將一個PictureBox控件添加到窗體,然後通過其圖像屬性將其分配給該圖像(該控件的名稱默認爲pictureBox1),然後其分配到電子表格中這樣說:

_platypusLogo = pictureBox1.Image; 

當然,你可以分配到_platypusLogo直接/只在代碼也一樣,如果你喜歡。

相關問題