Actualmente estoy tratando de escribir datos en una matriz de objetos a un rango en Excel usando el siguiente código, donde objData
es sólo una matriz de cadenas:escritura matriz de rango de Excel
private object m = System.Type.Missing;
object[] objData = getDataIWantToWrite();
Range rn_Temp;
rn_Temp = (Range)XlApp.get_Range(RangeName, m);
rn_Temp = rn_Temp.get_Resize(objData.GetUpperBound(), 1);
rn_Temp.value2 = objData;
Esta muy cerca funciona, el problema es que el rango se llena pero cada celda obtiene el valor del primer elemento en objData
.
La inversa funciona, es decir
private object m = System.Type.Missing;
object[] objData = new object[x,y]
Range rn_Temp;
rn_Temp = (Range)XlApp.get_Range(RangeName, m);
rn_Temp = rn_Temp.get_Resize(objData.GetUpperBound(), 1);
objData = (object[])rn_Temp.value2;
devolvería una matriz que contiene todos los valores de la hoja de trabajo, así que no estoy seguro de por qué la lectura y la asignación de trabajo diferente.
¿Alguien ha hecho esto con éxito? Actualmente estoy escribiendo la matriz celda por celda, pero tiene que lidiar con lotes (> 50,000) de filas y esto consume mucho tiempo.
La respuesta seleccionada no lo hace inmediatamente obvio, por lo que si alguna vez alguien más tiene este problema, en definitiva, la solución es que necesita asignar una matriz 2D ('objeto [,]') aunque sus datos podrían caber en una sola dimensión. – zneak
[muy útil] (http://blogs.msdn.com/b/eric_carter/archive/2004/05/04/126190.aspx) –