Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ExcelDNA-创建表:xlcAddListItem或其他方式_C#_Excel_Excel Dna - Fatal编程技术网

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
    对象,然后

  • 在宏或COM回调上下文中从主线程进行所有COM对象模型调用

  • 您可能需要从
    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”表