ExcelDNA – 创build一个表:xlcAddListItem或其他方式

我想弄清楚如何使用ExcelDNAExcelReference范围创build表。

使用Excel,您通常会执行以下操作:

 range2.Worksheet.ListObjects.Add(Microsoft.Office.Interop.Excel.XlListObjectSourceType.xlSrcRange, range2, System.Type.Missing, Microsoft.Office.Interop.Excel.XlYesNoGuess.xlYes, System.Type.Missing).Name = "uniquesomething"; 

我一直在尝试使用ExcelDNAxlcAddListItemExcelDNA类似的东西,但是如果没有任何适当的文档,这很粗糙。 有没有人有成功? 基本上采取ExcelDNA数组调整器的例子,然后把网格输出,把它变成一个表。

到目前为止我尝试过

 ExcelDna.Integration.SourceItem mySourceItemHopefully = (ExcelDna.Integration.SourceItem)XlCall.Excel(XlCall.xlcAddListItem, 1, myExcelReference); mySourceItemHopefully.Name = "uniquesomething"; 

但是我得到一个访问冲突错误。

为此,您必须使用COM对象模型,只要您符合以下条件,就可以从Excel-DNA加载项中安全地使用该模型:

  1. 使用ExcelDnaUtil.Application来获取根Application对象,和

  2. 在macros或COMcallback上下文中从主线程进行所有COM对象模型调用。

您可能需要从ExcelReference获取COM Range对象。

这可以像下面这样简单:

 static Range ReferenceToRange(ExcelReference xlref) { string refText = (string)XlCall.Excel(XlCall.xlfReftext, xlref, true); dynamic app = ExcelDnaUtil.Application; return app.Range[refText]; } 

(这里的“dynamic”应用程序也可以键入为Microsoft.Office.Interop.Excel.Application ,如果你有一个PIA组件的参考。)

对于具有多个矩形的更复杂的ExcelReferences,您可以从这里的VB.NET代码开始: https : //github.com/Excel-DNA/Registration/blob/882517eed2137d2b2f9b4b794803258d20e5a174/Source/ExcelDna.Registration.VisualBasic/RangeParameterConversion.vb


C API不支持添加表格。 微软还没有扩展xlcXXXmacros来覆盖最新版本的Excel(自Excel 2000以来)的新function。 (但是,在Excel 2013之前, xlfXXX函数的列表一直保持最新。)

您列出的两个macros函数不涉及您正在创build的表的types – 您可以在MacroHelp帮助文件中看到此处,您可以在这里find它: http ://www.xceed.be/Blog.nsf/dx/excel -macrofunction的帮助文件换窗户-7

ADD.LIST.ITEM( xlcAddListItem ): “在工作表或对话框控件上的列表框或下拉控件中添加一个项目。

TABLE( xlcTable ): “等同于从数据菜单中select表格命令,根据您在工作表上定义的input值和公式,创build一个表格,使用数据表格通过改变某些常数值来执行”假设“分析在工作簿中查看其他单元格中的值是如何受到影响的。“ 所以这是关于数据表,它与你正在创build的'ListObject'表不同。