[英]C# Assembly with ExcelDNA
我正在将 VSTO 应用程序转换为与 ExcelDNA 兼容的应用程序。 然而,r 的主要问题是 ExcelDNA 与 VSTO 相比没有控件 object。
在 VSTO 中:Microsoft.Office.Tools.Excel:可以添加 listObject
Worksheet worksheet = Globals.Factory.GetVstoObject(
Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets[1]);
listObj = worksheet.Controls.AddListObject(cell, "list1");
随后,您可以设置数据源
listObj.DataSource=list;
但是,当我尝试使用 Micosoft.Office.Interop.Excel 使用 listObject 在 ExcelDNA 中执行此操作时。 我无法得到想要的结果,listObject 返回了空白数据。
ws=excelApp.ActiveWorkBook.ActiveSheet;
Excel.Range rng=ws.cells[1,1];
//set the datasource
rng.Value2=list;
listObj=this.ListObjects.Add(
Excel.XlListObjectSourceType.xlSrcRange, rng,Missing.Value,
Microsoft.Office.Interop.Excel.XlYesNoGuess.xlNo, Missing.Value);
我不能使用 Globals.Factory... 因为这不是 VSTO 程序。 因此,我想出了以下解决方法。 有什么我做错了吗? 我怀疑这是在 ExcelDNA 中出现问题的数据源。
我能做些什么来解决这个问题? 我想如何将 VSTO 程序转换为 ExcelDNA 中的等效程序?
实际上,从您的 Excel-DNA 加载项中,您只能访问 Excel COM object Z20F35E630DAF494DBFACZC3F6 扩展名和 notVSTO8D。 但是,VSTO 程序集只是通过 COM 接口与 Excel 通信,因此理论上您应该能够从 Excel-DNA 加载项中执行相同的操作,也许是在添加一些帮助程序类之后。
我建议您可以尝试找出如何从 VBA 创建列表 object,也许通过记录和检查一些执行您想要的宏。 如果您能够从 VBA 以您想要的方式操作 Excel,那么您当然可以从 Excel-DNA 加载项中执行相同的操作。
一个可能的问题是,我相信某些 object model 仅通过 COM 调度接口公开。 这些方法不会通过互操作程序集可见,并且可能必须通过反射调用,从 VB.NET 或 C# 中的“动态”支持 4. 一旦您能够从 Z6E3EC7E6A9F6007B4838'm 乐于帮助找出如何从您的 Excel-DNA 加载项中执行此操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.