2014-11-06 98 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直接/只在代码也一样,如果你喜欢。

相关问题