插入一个图像到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"] 

你可以从以下获益

 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(); } } } } 

你有没有尝试给excelpicture的位置?

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

您可以很容易地将图像添加到Excel电子表格中(这里假设您使用的是C#中的Microsoft.Office.Interop.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常量,或者您可以使用硬编码整数,如果您想要面对史蒂夫·麦康奈尔的“代码完成”中的build议,关于除了有时0和1

一个图像需要分配给_platypusLogo。 如果您正在使用C#实用程序应用程序来dynamic生成Excel电子表格,则可以将一个PictureBox控件添加到窗体,然后通过其Image属性(该控件被命名,默认为pictureBox1)将其分配给该窗体,然后将其分配到电子表格中:

 _platypusLogo = pictureBox1.Image; 

当然,如果您愿意的话,您也可以直接/单独在代码中指定_platypusLogo。