繁体   English   中英

C# 用 ExcelDNA 组装

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM