2012-05-16 36 views
8

Tengo un hardware para el cual obtengo 30 puntos de datos. Cada uno de estos puntos se registra en una hoja de cálculo en varios lugares diferentes antes de que la hoja se haga visible, luego otro programa se hace cargo de la hoja de cálculo de Excel. Se requiere que todos estos valores se escriban en la hoja de cálculo antes de que el otro programa se haga cargo. Si escribo cada celda individualmente, las escrituras tardan aproximadamente 50 ms, lo que demora aproximadamente 1,25 segundos para completar la adquisición de datos.En C#, ¿cómo utilizo Excel Interop para acelerar la escritura de varios valores de celda?

Si pudiera escribir todos los valores en la hoja de cálculo a la vez, creo que esto acelerará significativamente la escritura de todas estas celdas. El problema que veo es que los rangos funcionan muy bien para actualizar las celdas contiguas, ya que mis datos no son contiguos. En esencia, esto sería un ejemplo de lo que quiero escribir:
A1 = 1
B23 = a
F8 = 12/25/2012
D53 = 4,1235
B2 = 5

tengo intenté crear un rango de "A1, B23, F8, D53, B2", luego establecí los valores usando una matriz de valores. Intenté 3 arreglos diferentes: objeto [5], objeto [1,5] y objeto [5,1]. Todos estos establecen los valores de las celdas especificadas en el rango al primer índice de la matriz que creé en todos los casos.

¿Hay alguna manera de actualizar estos datos de 30 celdas sin recorrer las celdas de a una por vez?

Gracias, Tom

+0

Si esto se resuelve como usted dijo. Por favor, acepta la respuesta de Eugene Ryabtsev. – rcdmk

Respuesta

3

Si su arquitectura lo permite, otra idea es usar una hoja oculta con un rango rectangular continuo, asignar nombres a sus partes y usar estos nombres en todas las demás hojas.

0

que definirían un objeto de rango rectangular que incluye todas las celdas cuyos valores desea modificar. Obtenga una matriz rectangular object[,] de la propiedad de valor de ese rango. Escriba los valores nuevos en la matriz y luego establezca el valor del rango con la matriz modificada.

+0

Sí, quería probar esto, pero el rango de células termina siendo enorme, y hay todo tipo de gráficos y fórmulas que me temo que podrían interferir con este. Todavía puedo intentarlo sin embargo. Gracias. – bunggo

+1

@bunggo En ese caso, diría que la sugerencia de Eugene Ryabtsev parece prometedora. – phoog

0

Puede escribir los valores en celdas contiguas que están fuera de lugar, por ejemplo en la columna X, y tienen fórmulas en las celdas de destino que hacen referencia a estas celdas actualizadas. Entonces, la celda A1 tendría la fórmula "= X1", la celda B23 "= X2" y así sucesivamente.

Cuestiones relacionadas