Прежде всего, я знаю, что вопрос уже задавался здесь:
вернуть многомерный массив в excel из c++ xll
Я пытался оживить тему, но безуспешно. (ОП не был таким активным в последнее время, никогда не был.) Вот почему я снова задаю вопрос, заранее извините.
Я закодировал функцию, возвращающую (строку) одномерный массив:
__declspec(dllexport) LPXLOPER12 WINAPI Get1DArray(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[0];
return static_cast<LPXLOPER12>(&xlArray);
}
это работает. Я пробовал то же самое, что и ОП из вопроса, о котором я упоминал выше, пытался (вот как я наткнулся на его вопрос).
Единственный документ, который у меня есть, это msdn для excel sdk, он мне не помог. Функция, которую я закодировал, я использовал пример, найденный в Интернете. Не нашел ни одного для двумерного массива. Знаю книги Стива Далтона про xll, не помогли.
Я подозреваю, что многомерные массивы XLOPER12
хранят значения в одномерных массивах, нумеруя по строкам и столбцам или столбцам и строкам, но не удалось использовать эту интуицию...
Вот почему я здесь.