Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gpassarelli

Ler Excel e salvar no Access...

Recommended Posts

Galera...eu jah vi todos os post q tem aqui no forum...mais nenhum resolveu meu problema...A unica coisa q eu quero eh assim....O excel vai tar as colunas dele...q vai ser o mesmo nome das colunas no access....Ae oq eu quero eh...o asp pegar os dados das colunas do excel....e inserir no Access.Tenderam?Eh soh isso...e ae a consulta eu fasso pelos dados do bd...pq eu acho mais facil do q pelo excel...Eh soh isso q eu preciso...Ajuda eu ae gnt...por favor....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem certeza que não tem isso no fórum?

Posta algum código que você já fez aí.

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza...

 

Fiz aqui mas não testei não.

<%
ConexaoExcel = "Driver={Microsoft Excel Driver (*.xls)};DriverId=790; DBQ=" & Server.MapPath("arquivo.xls")
set ObjConexaoExcel = Server.CreateObject("ADODB.Connection")
ObjConexaoExcel.Open ConexaoExcel

ConexaoAccess = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("arquivo.mdb")
Set ObjConexaoAccess = Server.CreateObject("ADODB.Connection")
ObjConexaoAccess.Open ConexaoAccess

set dados = ObjConexaoExcel.Execute("SELECT * FROM [planilha$]")

if not dados.eof then
	while not dados.eof
		inclusao = "INSERT INTO tabela(campo1) VALUES('"& dados("campo1") &"')"
		set inclusao = ObjConexaoAccess.Execute(inclusao)
		set inclusao = nothing
	
		dados.movenext
	wend
end if

dados.close
set dados = nothing
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

hargon...ae tipo...o Codigo eu coloquei assim:

<%ConexaoExcel = "Driver={Microsoft Excel Driver (*.xls)};DriverId=790; DBQ=" & Server.MapPath("teste.xls")set ObjConexaoExcel = Server.CreateObject("ADODB.Connection")ObjConexaoExcel.Open ConexaoExcelConexaoAccess = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("teste.mdb")Set ObjConexaoAccess = Server.CreateObject("ADODB.Connection")ObjConexaoAccess.Open ConexaoAccessset dados = ObjConexaoExcel.Execute("SELECT * FROM [teste$]")if not dados.eof then	while not dados.eof		inclusao = "INSERT INTO tabela(field1) VALUES('"& dados("A") &"')"		set inclusao = ObjConexaoAccess.Execute(inclusao)		set inclusao = nothing			dados.movenext	wendend ifdados.closeset dados = nothing%>
Mais tem coisa q eu nao sei se tah certo...tipo...oq q eu tenho q colocar onde eh:

SELECT * FROM [teste$] o [teste$] eu tenho q colocar oq?

E no

VALUES('"& dados("A") &"')" o A vai ser no nome da coluna no Excel?

E com esse codigo...deu o seguinte erro:

Tipo de erro:Microsoft OLE DB Provider for ODBC Drivers (0x80004005)[Microsoft][Driver ODBC para Microsoft Access]Erro geral Não é possível abrir a chave 'Temporary (volatile) Jet DSN for process 0x73c Thread 0x948 DBC 0x21ae024 Jet' do Registro./excel/excel2.asp, line 8

Linha 8 = ObjConexaoAccess.Open ConexaoAccessSera q tinha como alguem me ajduar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

1. Teste é o nome da planilha.

 

2. Você colocou tabela(field1) e na verdade é o nome da tabela.

 

3. dados("A") é o nome da coluna

 

4. O erro que ocorreu é pq nao foi possivel localizar o arquivo teste.mdb. Coloca ele na mesma pasta onde está o arquivo asp que você executou que dará certo. Ou então altere o caminho.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera...eu consegui inserir...agora sera q alguem sabia me explicar como q eu fasso pra atualizar os dados do bd...vindo com os dados da planilha tbm?Tipo assim...eu jah add os dados da planilha no bd....agora eu queria saber como q assim...se eu atualizar a tabela...eu executo um arquivo asp...pra q leia os dados da tabela do excel e ATUALIZE os dados tem jah no bd...e nao insira novamente...Entenderam?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ao invés de inserir no banco de dados, você faz um update.

 

Mas antes faz um select para vê se o item já está inserido no banco, caso esteja você faz o update, caso não esteja, você faz a inclusão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

set verifica = ObjConexao.Execute("SELECT * FROM tabela WHERE campo="&codigo)

if not verifica.eof then

'aqui você faz o update, pq se entrou aqui é pq o registro já está cadastrado

else

'aqui você faz o insert, pq se caiu aqui é pq nao foi encontro o registro

end if

verifica.close

set verifica = nothing

Compartilhar este post


Link para o post
Compartilhar em outros sites

Algum dado que não se repita e sirva para comparação.

 

Caso esse dado não exista, não dará certo isso que você quer fazer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao tah...eu tendi jah...jah sei como q eu posso fazer isso...Mais tipo...eu tinha adaptado o INSERT e pra ficar como UPDATE...o codigo ficou assim

<%Set ObjConexaoExcel = Server.CreateObject("ADODB.Connection") ObjConexaoExcel.Open "Driver={Microsoft Excel Driver (*.xls)};DriverId=790; DBQ=" & Server.MapPath("teste.xls")&";"Set ObjConexaoAccess = Server.CreateObject("ADODB.Connection") ObjConexaoAccess.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("teste.mdb")&";"set dados = ObjConexaoExcel.Execute("SELECT * FROM [produtos$]")do while not dados.eof			ObjConexaoAccess.Execute ("UPDATE produtos SET modelo='" & dados("Modelo") & "', receptor='" & dados("Receptor") & "'")			dados.movenext  loop%>
Soh q tipo...as coisas q era da 1 Coluna da planilha do excel (Modelo) atualizava certin...agora as dah 2 coluna da planilha...ele ia copiando a do primeiro...Como q eu posso fazer pra dar o movenext na 2 coluna da planilha tbm,?

Vlw por td ajuda ae

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara...Pintou uma duvida aqui agora...E se os dados do Excel tiverem assim:Coluna 1 Coluna 2 Coluna 3Nome produto: Produto 1 Produto 2Caract 1: Caract 1 Caract 1Caract 2: Caract 2 Caract 2Caract 3: Caract 3 Caract 3Tendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

haha se estiverem em colunas e não em linhas?

 

Aí você terá que fazer uma pesquisa sobre como navegar na tabela sem saber o nome das colunas hehe

 

Já vi algo em algum lugar sobre isso, mas não lembro onde...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Procura assim:

 

asp + excel + range

 

OU

 

asp + excel + cells

 

Tenta achar em portugues primeiro... Com certeza você vai achar bastante coisa...

O Range funciona com a letra da coluna e o número da linha... Já o Cells funciona com o número da linha e coluna.

Ex:

Range("A3")

Cells(2,3)

 

Tendeu?

 

É q não lembro direito como é a sintaxe... http://forum.imasters.com.br/public/style_emoticons/default/blush.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.