在 BluePrism 中引用 Office Interop 对象

Referencing Office Interop Objects in BluePrism

在 BluePrism 提供的开箱即用的 MS VBO 之外。是否有人成功地 import/reference (COM) Office Interop 对象(Word、Excel、Outlook 等)用于 BluePrism 代码阶段?请告诉我怎么做?

我注意到有一个类似的问题,但没有成功回答: DLLImportAttribute C# - Outlook.

请查看我对您所引用问题的回答,这应该会让您了解如何使用 VB.NET。

如果你坚持用 C# 来做,你需要确保你添加了一个命名空间和对对象代码选项的引用(我的路径只是指向 GAC 中的某个地方,你应该将 DLL 复制到其他地方):

然后您可以在代码阶段使用 DLL 中的对象:

Application app = new Application(){
    Visible = true
};

Workbook wb = app.Workbooks.Add();
Worksheet ws = (Worksheet)wb.Worksheets.Add();
ws.Visible = XlSheetVisibility.xlSheetVisible;

如您所见,您也可以使用命名枚举,但就像在 C# 中一样(与 VBA 不同)您需要完全指定它(XlSheetVisibility.xlSheetVisible 而不仅仅是 xlSheetVisible)

编辑:VB.NET 的好处是您可以使用 CreateObject() 方法与 Excel Interop DLL 交互,而无需显式指定该 DLL 的路径。如果您没有将 DLL 存储到所有资源 PC 共用的位置的选项,这将很有用。但是,如果可以,那么 C# 方法会让您头疼得多。

至于能够用 Excel "prefix" 引用 Excel 对象(例如:Excel.Workbook 而不仅仅是 Workbook)你需要为您的 Excel 命名空间指定一个 别名。你可以这样做:

之后您的代码将起作用:

var excelApp = new Excel.Application();
excelApp.Visible = true;
Excel.Workbooks books = excelApp.Workbooks;

这实际上不是一个坏方法,因为某些 Excel 类 可能与其他 .NET 类 具有相同的名称。我相信我也必须这样做,因为 TableDocument 或其他原因...