2013-07-04 6 views
1

Я использую Excel 2010 и Excel 2010 XLL SDK. Пытаюсь с помощью этой функции:Возвращаемый массив в Excel XLL

__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 затем возвращается, чтобы преуспеть 4 значения, но третье значение TRUE (??). Когда xlValues размер массива равен 10, он возвращает в Excel ошибку #NUM. Каков правильный способ возврата массива в Excel?

P.S. Я использую такой шаблон для этой статьи http://blogs.msdn.com/b/andreww/archive/2007/12/09/building-an-excel-xll-in-c-c-with-vs-2008.aspx

ответ

2

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

+0

Благодарим за предложения! Это верно! – amaranth

Смежные вопросы