Pregunta

Estoy trabajando en un plugin de Excel (XII), que se comunica con objetos COM. Por lo tanto, tengo que Marshall entre XLOPER y la variante. Tengo la mayor parte de este trabajo, pero los arreglos son definitivamente un dolor. Necesito el apoyo de 1 y matrices 2D.

Me imagino que alguien ya ha tenido que lidiar con esto antes. ¿Cuál es la mejor manera de simplificar tratar con VARIANTE, SAFEARRAY y XLOPER (y XLOPER12)?

¿Fue útil?

Solución

I tuvo que mano-rueda mi propio código de clasificación para esto. No hubo ninguna libs libremente disponibles para manejar esto. XLW es para envolver toda su plugin -. Esto no era una opción para mí

Al final, sólo se tomó mucho tiempo, mirando a través de la documentación de xloper y la variante, y encontrar la manera de ellos mapa el uno al otro.

Para los curiosos:

matrices en xloper (12):

  • .xltype es xltypeMulti
  • .val.array es un puntero a una matriz de xlopers.

matrices en variante:

  • .vt es VT_ARRAY | VT_VARIANT
  • .parray es un SafeArray de variantes

otros consejos con este cálculo de referencias:

  • xltypeRef y xltypeSRef:. XlCoerce uso para buscar valores de las celdas reales
  • valores enteros corren el riesgo de desbordamiento. boost::numeric_cast ayuda con eso.
  • de clasificación cadena es molesto. xloper usos char, xloper12 usos WCHAR, usos variantes bstr.
  • Recuerde que debe liberar los buffers que asignar a sus nuevas cadenas xloper. Uso xlbitDLLFree y xlAutoFree (12) en consecuencia.
  • programación
  • plantilla es útil para el tema xloper / xloper12. Boost ayuda. _bstr_t también ayuda.

Otros consejos

Yo uso XLL Plus (costes) http://www.as-ltd.co.uk/xllplus/default.htm

También hay XLW (código abierto) http://xlw.sourceforge.net/

y probablemente otros no soy consciente de

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top