gpt4 book ai didi

使用 ExcelDNA 的 C# 程序集

转载 作者:太空宇宙 更新时间:2023-11-03 16:44:55 27 4
gpt4 key购买 nike

我正在将 VSTO 应用程序转换为与 ExcelDNA 兼容的应用程序。然而r 主要问题是与 VSTO 相比,ExcelDNA 没有控件对象。

在 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;

但是,当我尝试使用 listObject 使用 Micosoft.Office.Interop.Excel 在 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 对象模型,而不能访问 VSTO 扩展。但是,VSTO 程序集只是通过 COM 接口(interface)与 Excel 对话,因此理论上您应该能够从 Excel-DNA 加载项执行相同的操作,也许在添加一些帮助程序类之后。

我建议您可以尝试弄清楚如何从 VBA 创建列表对象,也许可以通过记录和检查一些执行您想要的操作的宏来实现。如果您能够通过 VBA 按照您想要的方式操作 Excel,那么您当然可以通过 Excel-DNA 加载项执行相同的操作。

一个可能的问题是我相信某些对象模型只能通过 COM 调度接口(interface)公开。这样的方法将不会通过互操作程序集可见,并且可能必须通过反射调用,从 VB.NET 或 C# 4 中的“动态”支持。一旦您能够从 VBA 进行正确的调用,我很高兴帮助弄清楚如何从您的 Excel-DNA 加载项中做到这一点。

关于使用 ExcelDNA 的 C# 程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6346631/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com