在BluePrism中引用Office Interop对象

时间:2019-02-20 13:32:19

标签: c# com-interop blueprism

BluePrism提供的现成的MS VBO之外。是否有人成功管理过导入/引用(COM)Office Interop对象(Word,Excel,Outlook等)以用于BluePrism代码阶段?请告诉如何?

我注意到存在类似的问题,但未成功回答:   DLLImportAttribute C# - Outlook

1 个答案:

答案 0 :(得分:2)

请看一下我对您所引用问题的回答,它应该使您以及如何使用VB.NET做到这一点的想法。

如果坚持使用C#进行操作,则需要确保添加名称空间并引用对象的代码选项(我的路径仅指向GAC中的某个位置,您应该将DLL复制到其他位置):

enter image description here

然后,您可以在代码阶段使用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存储到所有Resource PC公用的位置,这将很有用。但是,如果可以,那么C#方法将使您的头痛减轻很多。

要能够使用Excel“前缀”来引用Excel对象(例如:Excel.Workbook而不只是Workbook),您需要指定别名为您的Excel名称空间。您可以这样做:

enter image description here

随后您的代码将起作用:

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

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