C# Excel插入Object

1 篇文章 0 订阅

C# Excel插入Object—OLEObjects


最近在研究数据自动化整理的技术,说白了就是通过软件去操作Excel,Word实现数据整理,文档格式整理之类的功能,有兴趣的同学可以加博主微信互相学习。
在开发过程中遇到这样一个功能,就是将一个压缩包文件导入到Excel中,于是就有了OLEObjects的使用。

OLEObjects对象 泛指工作表上所有 “OLEObject” 对象的集合

每一个 OLEObject 对象都代表一个 ActiveX 控件或者一个链接或嵌入的 OLE 对象。

Add方法 —向工作表中添加新的 OLE 对象

语法:

OLEObject Add(object ClassType, object Filename, object Link, object DisplayAsIcon, object IconFileName,
         object IconIndex, object IconLabel, object Left, object Top, object Width, object Height);

参数

名称必需/可选数据类型说明
ClassType可选Variant必须指定_ClassType_或_FileName_。 一个字符串,包含要创建的对象的程序标识符。 如果指定了 ClassType 参数,则忽略 FileName 和 Link。
FileName可选Variant必须指定_ClassType_或_FileName_。 一个字符串,指定用于创建 OLE 对象的文件。
Link可选Variant如果为 True,则让基于 FileName 的新 OLE 对象链接到该文件。 如果该对象未链接到文件,则该对象被创建为文件副本。 默认值为 False 。
DisplayAsIcon可选Variant如果为 True,则以图标或正常图片方式显示新的 OLE 对象。 如果该参数设置为 True,则可以使用 IconFileName 和 IconIndex 来指定图标。
IconFileName可选Variant一个字符串,指定要显示的图标所在的文件。 仅当 DisplayAsIcon 为 True 时,才使用该参数。 如果不指定该参数,或文件中不包含图标,则使用 OLE 类的默认图标。
IconIndex可选Variant图标文件中包含的图标数目。 仅当 DisplayAsIcon 参数为 True 并且 IconFileName 参数引用包含图标的有效文件时,才使用该参数。 如果由 IconFileName 参数指定的文件中不存在具有指定索引号的图标,则使用该文件中的第一个图标。
IconLabel可选Variant一个字符串,指定在图标下方显示一个标签。 仅当 DisplayAsIcon 为 True 时,才使用该参数。 如果省略该参数,或者该参数为空字符串 (""),则不显示任何标题。
Left可选Variant新对象的初始坐标, 以磅为单位, 相对于工作表上单元格 A1 的左上角或图表的左上角。
Top可选Variant新对象的初始坐标, 以磅为单位, 相对于工作表上第1行的顶部或图表上的图表区的顶部。
Width可选Variant新对象的初始宽度 (以磅为单位)。
Height可选Variant新对象的初始高度 (以磅为单位)。

参数摘自:https://docs.microsoft.com/zh-cn/office/vba/api/excel.oleobjects.add

代码如下:
		/// <summary>
        /// Excel插入对象[压缩包-284Log]
        /// </summary>
        /// <param name="ExcelPath">Excel Path</param>
        /// <param name="SheetIndex">Excel Sheet index </param>
        /// <param name="ObjPath">Object Path</param>
        public static void ExcelInsertObj(string ExcelPath,int SheetIndex,string ObjPath)
        {
            Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
            try
            {
                app.Visible = true;
                Excel.Workbook wb = app.Workbooks.Open(ExcelPath, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                    Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                Excel.Worksheet sht = wb.Worksheets[SheetIndex];
                Excel.Range rng = sht.get_Range("B2", "E5");
                Excel.OLEObjects objs = sht.OLEObjects();
                Excel.OLEObject obj = objs.Add(
                    Filename: ObjPath,
                    Link: false,
                    DisplayAsIcon: true,
                    //IconFileName: "fileName" , 
                    IconIndex: 0,
                    IconLabel: "284Log",
                    Left: rng.Left,
                    Top: rng.Top,
                    Width: rng.Width,
                    Height: rng.Height
                    );
                obj.Select();
                app.AlertBeforeOverwriting = false;
                wb.Close(XlSaveAction.xlSaveChanges, Missing.Value, Missing.Value);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(wb);
                wb = null;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                app.Quit();
                app = null;
                GC.Collect();
            }
        }
  • 如有雷同,纯属巧合
  • 转载请标明出处
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值