C# ExcelDNA-创建表:xlcAddListItem或其他方式
我试图弄清楚如何使用C# ExcelDNA-创建表:xlcAddListItem或其他方式,c#,excel,excel-dna,C#,Excel,Excel Dna,我试图弄清楚如何使用ExcelDNA从ExcelReference范围创建一个表 使用Excel,您通常会执行以下操作: range2.Worksheet.ListObjects.Add(Microsoft.Office.Interop.Excel.XlListObjectSourceType.xlSrcRange, range2, System.Type.Missing, Microsoft.Office.Interop.Excel.XlYesNoGuess.xlYes, System.Typ
ExcelDNA
从ExcelReference
范围创建一个表
使用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";
我一直在尝试使用xlcAddListItem
使用ExcelDNA
做类似的事情,但是如果没有任何适当的文档,它会非常粗糙。有人成功过吗?基本上,以ExcelDNA
array resizer为例,然后将网格输出转化为表格
到目前为止我试过了
ExcelDna.Integration.SourceItem mySourceItemHopefully = (ExcelDna.Integration.SourceItem)XlCall.Excel(XlCall.xlcAddListItem, 1, myExcelReference);
mySourceItemHopefully.Name = "uniquesomething";
但是我得到了一个访问冲突错误。为此,您必须使用COM对象模型,只要您:
ExcelDnaUtil.Application
获取根Application
对象,然后ExcelReference
获取COM范围对象
这可以简单到:
static Range ReferenceToRange(ExcelReference xlref)
{
string refText = (string)XlCall.Excel(XlCall.xlfReftext, xlref, true);
dynamic app = ExcelDnaUtil.Application;
return app.Range[refText];
}
(此处,如果您有对PIA程序集的引用,“动态”应用程序也可以键入为Microsoft.Office.Interop.Excel.Application。)
对于具有多个矩形的更复杂的Excel引用,可以从以下位置开始使用VB.NET代码:
C API不支持添加表。Microsoft尚未扩展
xlcXXX
宏以涵盖最新版本的Excel(自Excel 2000以来)中的新功能。(但是,xlfXXX
函数列表一直保持最新,直到Excel 2013。)
您列出的两个宏函数不涉及正在制作的表的类型-您可以在此处找到的MacroHelp帮助文件中看到这一点:
ADD.LIST.ITEM(xlcAddListItem
):“在工作表或对话框控件的列表框或下拉控件中添加项目。”
表格(xlcTable
):“相当于从“数据”菜单中选择“表格”命令。根据工作表上定义的输入值和公式创建表格。使用数据表格通过更改工作簿中的某些常量值来执行“假设”分析,以查看其他单元格中的值如何受到影响。”这是关于数据表的,它不同于您试图创建的“ListObject”表