Возвращение массива в Excel XLL

Я использую 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 значения, но 3-е значение 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

1

Решение

Вы должны сделать xlValues ​​статичным. С помощью https://xll.codeplex.com сделает вашу жизнь проще.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]