Escrevendo uma grande matriz 2D para o Excel
Eu estou olhando para escrever uma grande matriz 2d para uma planilha do Excel usando c #. Se a matriz é 500 x 500, o código que eu usaria para escrever isso é da seguinte maneira:
var startCell = Worksheet.Cells[1, 1];
var endCell = Worksheet.Cells[500, 500];
var writeRange = (Excel.Range)Worksheet.Cells[startCell, endCell;
writeRange.Value = myArray;
Eu recebo uma exceção nesta linha:
var endCell = Worksheet.Cells[500, 500];
Como qualquer pessoa que usou C # e Excel via COM pode testemunhar, a mensagem de erro recebida é praticamente inútil. Eu acho que o problema é que a estrutura de dados subjacente usada para a planilha não é de tamanho suficiente para indexar a célula 500.500 quando eu criar a planilha pela primeira vez.
Alguém sabe como alcançar o resultado desejado? Espero que haja uma maneira simples de redimensionar a estrutura de dados subjacente antes de criar o intervalo.
Obrigado.
Editar: mensagem de erro é:
{"Exception from HRESULT: 0x800A03EC"}
Com e excel código de erro de -2146827284.
Atualização: O link fornecido nos comentários abaixo fez alusão a um problema com a abertura da planilha do Excel no modo de compatibilidade. Este parece ser o problema. Se eu salvar o documento no formato .xlsx ou .xlsm antes de executar meu código, isso parece funcionar. Meu problema é que não posso esperar que meus usuários façam isso todas as vezes. Existe uma maneira programática de conseguir isso? Seria simplesmente um caso de abrir o arquivo, verificar a extensão e salvá-lo no novo formato, se necessário?