在Excel XLL中返回数组

我使用Excel 2010和Excel 2010 XLL SDK。 我尝试使用这个function:

__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?

PS我用这样的模板这篇文章http://blogs.msdn.com/b/andreww/archive/2007/12/09/building-an-excel-xll-in-cc-with-vs-2008.aspx

你也需要使xlValues是静态的。 使用https://xll.codeplex.com将使您的生活更轻松&#x3002;