automação do excel com o visual studio 2005 em c#

trashCanMan

Power Member
boas pessoal.
tudo o que eu queria era sacar dados de uma folha excel em c# com o VS.
A primeira das coisas estranhas que estão a acontecer é a seguinte:
Adicionei a referência às bibliotecas do Office no VS, "Microsoft Office 12.0 Object Library" e "Microsoft Excel 12.0 Object Library"... ora como instalei o Office 2007 (sim... sou utilizador de OpenOffice...) se não estou em erro, a versão não devia ser 11.0???
Isto tudo porque (segunda coisa estranha) quando chamo o método Workbooks.Open é lançada uma excepção que diz que, e passo a citar "Biblioteca de formato antigo ou de tipo inválido"!!
Como navego em águas ainda desconhecidas, alguem me pode dizer onde estou a falhar??
Desde já os meus agradecimentos.

p.s. estou a incluir também o metodo e a excepção lançada

Código:
this.excelWorkBook = this.excelApp.Workbooks.Open(nomeFicheiro, ae_update_links, ae_read_only, ae_format, ae_password, ae_write_res_password, ae_ignore_read_only_recommend, ae_origin, ae_delimiter, ae_editable, ae_notify, ae_converter, ae_add_to_mru, ae_local, ae_corrupt_load);
Código:
ERRO:System.Runtime.InteropServices.COMException (0x80028018): Biblioteca de formato antigo ou de tipo inválido. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))
   at Microsoft.Office.Interop.Excel.Workbooks.Open(String Filename, Object UpdateLinks, Object ReadOnly, Object Format, Object Password, Object WriteResPassword, Object IgnoreReadOnlyRecommended, Object Origin, Object Delimiter, Object Editable, Object Notify, Object Converter, Object AddToMru, Object Local, Object CorruptLoad)
   at testeExcel.AutomExcel.AbrirFicheiro(String nomeFicheiro, String password) in D:\geral\zonaEI\projecto\testeExcel\testeExcel\AutomExcel.cs:line 118:ERRO
 
ok Pessoal vamos acalmar que já encontrei solução:
o problema era que estou a executar uma versão em inglês do excel mas as versões regionais da minha maquina estão configuradas para português...
Basta para isso definir a informação da localização actual para inglês antes de chamar o Excel:
Código:
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US");
como está explicado aqui
já funca:p
 
Back
Topo