View Full Version : automação do excel com o visual studio 2005 em c#


trashCanMan
06-03-2008, 23:50
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

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);ERRO:System.Runtime.InteropServic es.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(Stri ng 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\Aut omExcel.cs:line 118:ERRO

trashCanMan
07-03-2008, 00:42
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:
System.Threading.Thread.CurrentThread.CurrentCultu re = System.Globalization.CultureInfo.CreateSpecificCul ture("en-US");como está explicado aqui (http://support.microsoft.com/?kbid=320369)
já funca:p