C# Excel插入Object
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();
}
}
- 如有雷同,纯属巧合
- 转载请标明出处