使用c#将图像插入excel单元格
本文关键字:excel 单元格 插入 图像 使用 | 更新日期: 2023-09-27 18:29:19
我正在从数据表动态生成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();
}
}
}
}
你有没有试过用优秀的图片来定位?
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"answers"IMAGE_LUMN"是int常量,或者如果你想违背Steve McConnell在Code Complete中关于常数化除0和1 之外的所有数字的建议,你可以只使用硬编码的int
需要将图像分配给_platypusLogo。如果您正在使用C#实用程序应用程序动态生成Excel电子表格,您可以将PictureBox控件添加到表单中,然后通过其image属性(默认情况下,该控件名为pictureBox1)将图像分配给它,然后通过以下方式将其分配给电子表格:
_platypusLogo = pictureBox1.Image;
当然,如果您愿意,也可以直接/仅在代码中分配_platypusLogo。