如何从XLL函数返回数组

时间:2013-02-22 09:25:58

标签: c++ xll

我是XLL的新手,任何人都知道如何将6x1数组返回Excel?

以下是我的功能(部分代码来自其他帖子):

__declspec(dllexport) LPXLOPER12  WINAPI GetArr(char* arg1, char* arg2)
{
   vector<double> arr = functionReturnVector;

   XLOPER12 list;
   list.xltype = xltypeMulti | xlbitDLLFree;
   list.val.array.lparray = new XLOPER12[6];
   list.val.array.rows = 6;
   list.val.array.columns = 1;
   for(int i = 0; i < 6; ++i) {
      list.val.array.lparray[i] = arr[i]; // error: IntelliSense: no operator "=" matches these operands
   }
return &list;
}

[2013年2月23日] 目前我从XLL RETURN ARRAY读取代码并查看我的代码,它可以编译但返回0 ...

__declspec(dllexport) LPXLOPER12 WINAPI GetArr(void)
{   
XLOPER xlArray, xlValues[2];

xlValues[0].xltype = xltypeNum;
xlValues[1].xltype = xltypeNum;
xlValues[0].val.num = 11;
xlValues[1].val.num = 17;

xlArray.xltype = xltypeMulti|xlbitDLLFree;
xlArray.val.array.rows = 1;
xlArray.val.array.columns = 2;
xlArray.val.array.lparray = &xlValues;

return &xlArray;
} 

2 个答案:

答案 0 :(得分:3)

我现在可以在Excel工作表中打印1X2数组,以下是我的代码。

**使用Func签名类型U

1.选择一行两列

2.在第一个单元格中输入命令= GetArray()

3.Ctrl + shift + enter

 __declspec(dllexport) LPXLOPER12 WINAPI GetArray(void)
{
    static XLOPER12 xlArray;
    XLOPER12 xlValues[2];
    xlValues[0].xltype = xltypeNum;
    xlValues[1].xltype = xltypeNum;
    xlValues[0].val.num = 123;
    xlValues[1].val.num = 456;
    xlArray.xltype = xltypeMulti|xlbitDLLFree;
    xlArray.val.array.rows = 1;
    xlArray.val.array.columns = 2;
    xlArray.val.array.lparray = &xlValues;
    return (LPXLOPER12)&xlArray;
}

答案 1 :(得分:1)

也许http://xll.codplex.com可以帮助您解决问题,但正如其他想要帮助您的人一样,您的代码似乎离岸很远。

onnedécouvarepas de terre nouvelle sansconsentiràperdrede vue,d'abord et longtemps,tout rivage。

开玩笑吧。也许这对你有用。