Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Duvida sobre como usar o COM

Na Aula 5 o exemplo dado é utilizando um objeto do tipo dynamic. Mas caso eu não queira utilizar dynamic, a opção seria utilizar uma biblioteca externa?

2 respostas
solução

Olá, Raphael

Sem o dynamic, você teria que usar cast para fazer unboxing em diversos objetos, e utilizar os tipos explícitos. Por exemplo, com dynamic, temos a sintaxe:

workSheet.Columns[1].AutoFit();
workSheet.Columns[2].AutoFit();

Antes da versão C# 4.0, onde foi introduzido o dynamic, tínhamos que usar o cast para o tipo correto:

((Excel.Range)workSheet.Columns[1]).AutoFit();
((Excel.Range)workSheet.Columns[2]).AutoFit();

Além disso, em vez de ignorar os parâmetros default dos métodos, você precisaria passar os argumentos como Type.Missing:

excelApp.get_Range("A1", "B4").AutoFormat(Excel.XlRangeAutoFormat.xlRangeAutoFormatTable3, 
    Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
    Type.Missing);

Já a partir da introdução do dynamic, a mesma chamada pode ser feita ignorando os argumentos default:

workSheet.Range["A1", "B4"].AutoFormat(Format:    Excel.XlRangeAutoFormat.xlRangeAutoFormatTable3);

Para mais informações:

https://docs.microsoft.com/pt-br/dotnet/csharp/programming-guide/interop/how-to-access-office-onterop-objects

Entendi, o dynamic ajuda bastante.