Question

Je travaille sur un plug-in Excel (XLL), qui communique avec des objets COM. Donc, je dois marshall entre XLOPER et VARIANT. J'ai le plus de ce travail, mais les tableaux sont certainement une douleur. Je dois support 1 et des tableaux 2D.

J'imagine que quelqu'un a déjà dû faire face à cela auparavant. Quelle est la meilleure façon de simplifier le traitement des VARIANT, SAFEARRAY et XLOPER (et XLOPER12)?

Était-ce utile?

La solution

Je devais la main-roll mon propre code de triage pour cela. Il n'y avait pas libs disponibles librement pour gérer cela. XLW est destiné à envelopper l'ensemble de votre plugin -. Ce ne fut pas une option pour moi

En fin de compte, il a juste pris beaucoup de temps, en regardant à travers la documentation et xloper variante, et trouver comment les associer les uns aux autres.

Pour les curieux:

tableaux dans xloper (12):

  • .xltype est-xltypeMulti
  • .val.array est un pointeur vers un réseau de xlopers.

tableaux dans la variante:

  • .vt est VT_ARRAY | VT_VARIANT
  • .parray est une SafeArray de variantes

autres conseils avec ce rassemblement:

  • xltypeRef et xltypeSRef:. Utiliser xlCoerce pour rechercher les valeurs de cellules réelles
  • valeurs entières courent le risque de débordement. boost::numeric_cast aide à cela.
  • marshalling chaîne est ennuyeux. xloper utilisations char, xloper12 utilisations wchar, utilisations variantes bstr.
  • N'oubliez pas de libérer les tampons que vous allouez pour vos nouvelles chaînes de xloper. Utilisation xlbitDLLFree et xlAutoFree (12) en conséquence.
  • programmation modèle est utile pour la question de xloper / xloper12. Boost aide. _bstr_t aide aussi.

Autres conseils

J'utilise XLL Plus (coûts) http://www.as-ltd.co.uk/xllplus/default.htm

Il y a aussi XLW (opensource) http://xlw.sourceforge.net/

et probablement d'autres, je ne suis pas au courant de

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top