2013-02-22 65 views
4

返回數組我是新書面XLL,任何人都知道如何將一個6x1的陣列返回到Excel?如何從XLL功能

以下是我的函數(一些代碼從其他此帖一):

__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; 
} 
+0

我不知道關於XLL什麼,但「清單」是一個局部變量首先的。你不能返回指向局部變量的指針。第二個arr [i]的類型爲,當list.val.array.lparray [i]具有類型時(您剛完成了幾行新的XLOPER12 [6])。 – user928204 2013-02-22 09:35:58

+0

可能是重複的問題 - [見這裏] [1] [1]:http://stackoverflow.com/questions/14301998/how-to-return-an-array-from-an-xll -udf – 2013-02-22 09:59:03

+0

是的我已閱讀這篇文章,但代碼仍然無法正常工作。 – hkdeveloper758 2013-02-22 10:04:36

回答

3

我現在可以打印Excel工作表中的1X2陣列,下面是我的代碼。

**使用Func鍵簽名U型

1.select一行和兩列

2,型號命令=的getArray()在第一小區

3.Ctrl +移+輸入

__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; 
} 
+0

嘗試你片斷拋出我一個類型的'「XLOPER12(*)[2]」不能在與Visual Studio社區2013年的任何想法編譯分配到類型的「xloper12 *'實體?值 – 2017-04-12 07:31:10

+0

它應該是'xlArray .val.array.lparray =&xlValues [0];'和不'xlArray.val.array.lparray =&xlValues;' – 2017-04-12 07:39:19

+0

順便說一下,該怎麼辦如果我想返回一個二維數組? – 2017-04-12 07:57:04

1

也許http://xll.codplex.com可以幫助你解決你的問題,但作爲想幫助你其他人,你的代碼似乎很遠岸。

在NEdécouvre加萊漁村新式SANS consentiràperdre德VUE,科特迪瓦abord等longtemps,吹捧岸。

只是在開玩笑。也許這對你有用。