Итак, я пытаюсь автоматизировать Excel из C++ и OLE, используя функцию Autowrap
, предоставленную Microsoft в их примерах автоматизации.
Я дошел до того, что могу прочитать строковое значение из ячейки в электронной таблице. Однако кажется, что для некоторых значений что-то не так со строкой, как будто она не завершается нулем. Вот мой код:
VARIANT result;
VariantInit(&result);
AutoWrap(DISPATCH_PROPERTYGET, &result, range, L"Value", 0);
wprintf(L"%s, len: %d\n", result.bstrVal, SysStringLen(result.bstrVal));
wprintf(L"abc %s\n", SysAllocString(L"def"));
Результат:
John Doe á, 11
abc def
Принимая во внимание, что в файле Excel при отображении в Excel это выглядит так:
John Doe
(Может ли кодовая страница документа Excel каким-то образом быть проблемой? Это файл xlsx
.)
L"Value2"
? - person Amit   schedule 06.10.2015SysStringLen(results.bstrVal)
? 3. Что вы получите, если попробуетеwprintf(L"abc %s\n", SysAllocString(L"def"));
? - person Amit   schedule 06.10.2015LEN()
внутри excel показывает 8, я полагаю? - person Amit   schedule 06.10.2015