返回Excel XLL中的数组

Returning array in Excel XLL

本文关键字:数组 XLL Excel 返回      更新时间:2023-10-16

我使用的是Excel 2010和Excel 2010 XLL SDK。我尝试这个功能:

__declspec(dllexport) LPXLOPER12 WINAPI dfutil(void)
{     
        static XLOPER12 xlArray;
        XLOPER12 xlValues[4];
        int i;
        double z = 3.1456;
        for (i = 0; i < 4; ++i)
        {
        xlValues[i].val.num = i*z;
        xlValues[i].xltype = xltypeNum;
        }
        xlArray.xltype = xltypeMulti;
        xlArray.val.array.lparray = xlValues;//&xlValues[0];
        xlArray.val.array.rows = 1;
        xlArray.val.array.columns = 4;
        return (LPXLOPER12) &xlArray;
}

定义:

{
      L"dfutil",
      L"QU",        
      L"dfutil",
      L"",
      L"1",
      L"SimpleXll2007",
      L"",                  
      L"",                  
      L"ReturnArray function help",
      L"",
      L""
},

xlValues数组大小为4时,返回excel 4值,但第三个值为TRUE(??)。当xlValues数组大小为10时,它会向Excel返回#NUM错误。将数组返回到Excel的正确方法是什么?

附言:我在这篇文章中使用了这样的模板http://blogs.msdn.com/b/andreww/archive/2007/12/09/building-an-excel-xll-in-c-c-with-vs-2008.aspx

您也需要将xlValues设置为静态。使用https://xll.codeplex.com会让你的生活更轻松。