¿Cómo puedo ordenar de entre XLOPER y la variante? [cerrado]
-
12-10-2019 - |
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)?
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