Donc, j'essaie d'automatiser Excel à partir de C++ et OLE, en utilisant la fonction Autowrap
fournie par Microsoft dans leurs exemples d'automatisation.OLE bstr non null terminé?
Je suis allé aussi loin que je peux lire une valeur de chaîne d'une cellule dans la feuille de calcul. Cependant, il semble que pour certaines valeurs, quelque chose ne va pas avec la chaîne, comme si elle n'était pas terminée. Voici mon code:
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"));
La sortie est:
John Doe á, 11
abc def
considérant que, dans le fichier Excel lors de l'affichage dans Excel, il montre comme:
John Doe
(Can la page de code du document Excel est en quelque sorte un problème? C'est un fichier xlsx
.)
Pouvez-vous essayer avec 'L" Value2 "'? – Amit
@Amit, exactement le même résultat! –
1. Cela arrive-t-il avec n'importe quelle cellule/valeur? 2 Qu'est-ce que vous obtenez avec 'SysStringLen (results.bstrVal)'? 3. Qu'est-ce que vous obtenez si vous essayez wprintf (L "abc% s \ n", SysAllocString (L "def")); '? – Amit