Escribiendo una gran matriz 2d a Excel

Estoy buscando escribir una matriz 2D grande en una hoja de cálculo de Excel usando C #. Si la matriz es de 500 x 500, el código que usaría para escribir esto es el siguiente:

 var startCell = Worksheet.Cells[1, 1];
 var endCell = Worksheet.Cells[500, 500];
 var writeRange = (Excel.Range)Worksheet.Cells[startCell, endCell;
 writeRange.Value = myArray;

Tengo una excepción en esta línea:

var endCell = Worksheet.Cells[500, 500];

Como cualquiera que haya usado C # y Excel a través de COM puede testificar, el mensaje de error recibido es bastante inútil. Creo que el problema es que la estructura de datos subyacente utilizada para la hoja de trabajo no tiene el tamaño suficiente para indexar la celda 500,500 cuando creo la hoja por primera vez.

¿Alguien sabe como lograr el resultado deseado? Espero que haya una forma sencilla de redimensionar la estructura de datos subyacente antes de crear el Rango.

Gracias.

Editar: El mensaje de error es:

{"Exception from HRESULT: 0x800A03EC"}

Con código de error de Excel y de -2146827284.

Actualización: el enlace proporcionado en los comentarios a continuación alude a un problema con la apertura de la hoja de Excel en el modo de compatibilidad. Este parece ser el problema. Si guardo el documento en formato .xlsx o .xlsm antes de ejecutar mi código, esto parece funcionar. Mi problema es que no puedo esperar que mis usuarios hagan esto cada vez. ¿Hay una forma programática de lograr esto? ¿Sería simplemente un caso de abrir el archivo, verificar la extensión y luego guardarla en el nuevo formato si es necesario?

Respuestas a la pregunta(2)

Su respuesta a la pregunta