AJUDA VERSAO XLS

NAM4 18/04/2011 14:42:34
#371716
Olá pessoal do vbmania,

venho encarecidamente pedir uma dica para todos vocês.

Tenho uma aplicação web que vai pegar um arquivo XLS e inserir os dados no banco, até ai tudo certo e ja fiz ate a rotina, o meu problema (nao é bem um problema) é o seguinte:

existem varias versões de xls, e agora com o novo office ate o xlsx, dessa forma a minha connectionstring é a seguinte:

@[Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\pc\Desktop\QUERY012011.xls;Extended Properties=Excel 8.0[Ô];


o caso é que o extend Properties tem que ser o correto com a versao do xls, pensei em fazer a verificaçao pela extenção um switch case contendo a extençao, se for xlsx tem uma connectstring e se for xls, tem outra... o caso é que fazendo uma planilha no office 2000 por exemplo, ele gera um XLS de versao X.X e se você fazer a mesma planilha no office 2007 e salva-lo como XLS, ele vai ter a mesma extençao do XLS do 2000 porem a versao vai ser diferente, dessa forma dificultando minha connection string....

Atualmente o cliente usa office 2003, porém algumas pessoas la utilizam 2007,

gostaria de saber como posso pegar essa versao do XLS, ou seja, o Extended Properties certo do xls correspondente!


Agradeço desde ja


NaM4
SPRITU 19/04/2011 08:04:29
#371796
Ola Amigo,

Você poderia usar o objeto do Excel, Excel.Application adicionando o activex da versão mais atualizada que você puder, e usar ele para abrir ..
ira abrir qualquer versão anterior a ele sem problemas.
quanto ao extended, se você precisar rodar em Win7x64 vai precisar usar o ACE que gera uma connectionstring totalmente diferente dessa.

Caso você tenha o excel instalado na maquina q vai executar essa aplicação, utilize a referencia ao aplicativo é bem mais facil e menos problematico.

=)

NAM4 19/04/2011 09:28:15
#371809
ola spritu,

obrigado pela resposta, mas eu nao entendi direito, poderia me dar um exemplo prático?

abraços
TECLA 29/04/2011 22:12:13
#372841
Veja se te ajuda.

string path = [Ô]C:\\examples\\file1.xlsx[Ô];
string connString = string.Format([Ô]Provider=Microsoft.ACE.OLEDB.12.0;Data Source=[Ô] + path + [Ô];Extended Properties=\[Ô]Excel 12.0 Xml;HDR=YES\[Ô];[Ô]);
OleDbConnection cn = new OleDbConnection(connString);
cn.Open();
OleDbDataAdapter adapter = new OleDbDataAdapter([Ô]SELECT * FROM [Sheet1$][Ô], cn);
DataTable dt = new DataTable();
adapter.Fill(dt);
NAM4 02/05/2011 09:11:33
#372952
TECLA, obrigado pela resposta, mas esta forma eu faço tambem...

o meu problema é o seguinte... pra abrir o arquivo tenho que dar o version no Extended Properties.... só que a versao pode variar de acordo com o office do cliente... mesmo salvando com formato antigo... exemplo:

tenho excel 2003 salvo XLS ele vai salvar com uma versao pro extended properties se eu tiver o excel 2007 e salvar o mesmo XLS a versao é diferente... mesmo os dois sendo com extenção XLS


abraços
Tópico encerrado , respostas não são mais permitidas