首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用c#将图像插入到excel单元格中

使用c#将图像插入到excel单元格中
EN

Stack Overflow用户
提问于 2014-11-06 18:42:51
回答 3查看 15.7K关注 0票数 3

我正在从datatable动态地生成一个Excel工作表。我可以根据需要将文本添加到不同的单元格中。但是我不知道如何将图片添加到指定的范围中。

代码语言:javascript
运行
复制
        Excel.Application oApp = new Excel.Application();
        oApp.Application.Workbooks.Add(Type.Missing);

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

在这里我想添加图片..

我试着像这样

代码语言:javascript
运行
复制
        System.Drawing.Image imgg = System.Drawing.Image.FromFile("c:\\D.jpg");

例如:

代码语言:javascript
运行
复制
App.Range["B2", "C4"]
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-11-06 19:24:42

你可以从以下几个方面获益

代码语言:javascript
运行
复制
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();
            }
        } 

    }
}
票数 4
EN

Stack Overflow用户

发布于 2014-11-06 19:44:20

你有没有试过用excelpicture给职位?

代码语言:javascript
运行
复制
var picture = worksheet.Drawings.AddPicture("image_name", imgg);
picture.SetPosition(int row,int rowoffsetpixels,int column,int coloumoffsetpixels);//position for the image
票数 0
EN

Stack Overflow用户

发布于 2015-11-15 09:18:17

您可以很容易地将图像添加到Excel电子表格中(假设您使用的是C#中的Microsoft.Office.Interop.Excel程序集引用),如下所示:

代码语言:javascript
运行
复制
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”是整型常量,或者您可以只使用硬编码的整型,如果您想要违背Steve McConnell在Code Complete中关于实例化除0和1以外的所有数字的建议

需要将镜像分配给_platypusLogo。如果您正在使用C#实用程序应用程序动态生成Excel电子表格,则可以将PictureBox控件添加到表单,然后通过其图像属性(该控件默认命名为pictureBox1)为其分配图像,然后以这种方式将其分配给电子表格:

代码语言:javascript
运行
复制
_platypusLogo = pictureBox1.Image;

当然,如果您愿意,也可以在代码中直接/独占地为_platypusLogo赋值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26777431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档