C# 如何使用ExcelDNA访问Excel图表对象

C# 如何使用ExcelDNA访问Excel图表对象,c#,excel,excel-dna,C#,Excel,Excel Dna,我有一个简单的电子表格,上面有一个图表,叫做ChartTESTER.xlsb 我创建了这个C#函数,并通过ExcelDNA从excel调用它: public static string Chart_Test([ExcelArgument(AllowReference = true)]object relToCell) { var xlApp = (Microsoft.Office.Interop.Excel.Application)ExcelDnaUtil.App

我有一个简单的电子表格,上面有一个图表,叫做ChartTESTER.xlsb

我创建了这个C#函数,并通过ExcelDNA从excel调用它:

    public static string Chart_Test([ExcelArgument(AllowReference = true)]object relToCell)
    {
        var xlApp = (Microsoft.Office.Interop.Excel.Application)ExcelDnaUtil.Application;
        var cref = relToCell as ExcelReference;
        var cname = XlCall.Excel(XlCall.xlSheetNm, cref) as string;
        var workbooks = xlApp.Workbooks.Cast<Workbook>();
        string s1 = "";
        foreach (var aWb in workbooks)
        {
            s1 += "\n" + aWb.Name;
            s1 += ": " + aWb.Charts.Count;
        }
        return s1;
    }
publicstaticstringchart\u测试([ExcelArgument(AllowReference=true)]对象relToCell)
{
var xlApp=(Microsoft.Office.Interop.Excel.Application)ExcelDnaUtil.Application;
var cref=作为参考的relToCell;
var cname=XlCall.Excel(XlCall.xlSheetNm,cref)作为字符串;
var workbooks=xlApp.workbooks.Cast();
字符串s1=“”;
foreach(工作簿中的var aWb)
{
s1+=“\n”+aWb.Name;
s1+=“:”+aWb.Charts.Count;
}
返回s1;
}
它返回:

chartTESTER.xlsb:0

因此在工作簿中找不到图表对象


我做错了什么?

您使用的图表是一种工作表。如果您的图表已嵌入,那么它将位于工作表上的
ChartObject
中-不确定您是否可以在工作簿级别对其进行计数-您可能需要在工作表上迭代并检查
ChartObjects。计数
很好,谢谢。这是有道理的,并且使用图表的方式是一种工作表。如果您的图表已嵌入,那么它将位于工作表上的
ChartObject
中-不确定您是否可以在工作簿级别对其进行计数-您可能需要在工作表上迭代并检查
ChartObjects。计数
很好,谢谢。这是有道理的,而且有效