C#Com OLE服务器
我正试图找出使用C#.NET与OLE服务器交互的最佳方式 我发现了一些能够与COM+交互的代码,这些代码似乎适用于OLE服务器,但我想知道是否有更优雅或更简单的方法 我要求它晚点出发 代码(从网上其他地方盗取) 显然,在我的例子中,我将我的ole服务器的名称放在Excel.Application所在的位置,但我在早期绑定中看到过这样的情况,即可以直接从对象调用函数,而不必通过“InvokeMember” 这可能吗?我可以使用类型强制转换为对象作为我的类型吗C#Com OLE服务器,c#,.net,com,ole,C#,.net,Com,Ole,我正试图找出使用C#.NET与OLE服务器交互的最佳方式 我发现了一些能够与COM+交互的代码,这些代码似乎适用于OLE服务器,但我想知道是否有更优雅或更简单的方法 我要求它晚点出发 代码(从网上其他地方盗取) 显然,在我的例子中,我将我的ole服务器的名称放在Excel.Application所在的位置,但我在早期绑定中看到过这样的情况,即可以直接从对象调用函数,而不必通过“InvokeMember” 这可能吗?我可以使用类型强制转换为对象作为我的类型吗 谢谢。如果您使用的是.NET 4.0,
谢谢。如果您使用的是.NET 4.0,您可以使用
动态
而不是对象
,并像调用成员一样调用它们。然后,将在运行时检查它,如果名称正确,则执行它
//Get the excel object
var excel = Type.GetTypeFromProgID("Excel.Application");
//Create instance of excel
dynamic excelObject = Activator.CreateInstance(excel);
excelObject.Visible = true;
请尝试从添加引用中查看这一点。它为您提供了对Excel的有用访问。 Microsoft.Office.Core Microsoft.Office.Interop.Excel
using Excel = Microsoft.Office.Interop.Excel;
单元格和工作表等的访问方式如下:
Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets.Item[1];
worksheet.Cells.Item[6, 1]).Value;
它被称为COM,而不是OLE。奥立已经死了,埋了一段时间了。这将帮助您找到“添加引用”对话框中的选项卡。显然,我试图引用的是一个OLE服务器它肯定是一个OLE应用程序,它是一个.exe,并且是自注册的。。。我知道COM+诞生于OLE,但这是一个OLE服务器。请使用“添加引用”对话框中的“OLE”选项卡:)添加引用不会使绑定提前吗?另外,Excel只是另一个ole服务器的示例。
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
Excel.Application app;
Excel.Workbook workbook;
app = new Excel.ApplicationClass();
app.AutomationSecurity = Microsoft.Office.Core.MsoAutomationSecurity.msoAutomationSecurityForceDisable;
workbook = app.Workbooks.Open( openFileDialog.FileName,
0,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing);
return workbook;
}
Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets.Item[1];
worksheet.Cells.Item[6, 1]).Value;