Ir para conteúdo

POWERED BY:

Arquivado

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

kania

Alimentar MySql por planilha excel

Recommended Posts

Bom dia Pessoal,

 

Gente adei uma procurada aqui n forum e nanet, porem não consegui nada que realemnte me ajudasse.

estou desenvolvendo uma aplicação onde o cliente precisa alimentar o banco de dados mysql dele através de uma planilha do excel, isto porque ele recebe do seus fornecedores a listagem de preços via planilha do excel, se fosse eu que fizesse faria via MySqlFront, ou PhpMyAdmin, porem quem vai fazer a rotina será o próprio cliente que não entende nada de banco de dados, então preciso criar algo simples e intuitivo.

 

O que já fiz:

 

Um fom simples de seleção da planilha

Este form faz o upload da planilha para uma pasta do servidor

 

Daqui para frente comçou me probelma, fiz o código

 

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&url&""&Arq&";" & "Extended Properties=""Excel 8.0;HDR=Yes;"";"

Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.ActiveConnection = objConn
objRS.CursorType = 3
objRS.LockType = 2
objRS.Source = "Select * from [Plan1$]"
objRS.Open


while not objRS.EOF
	  response.write "Dados: " & objRS("Nome") 
	  objRS.movenext
wend

Para ver se conseguia ler a planilha, uma vez que conseguisse ler eu faria um delet na tabela limpando ele toda e em seguida um insert com os dados novos encontrados na planilha, porem esta dando o seguinte erro na leitura da planilha

 

Microsoft JET Database Engine error '80004005'

The Microsoft Jet database engine cannot open the file ''. It is already opened exclusively by another user, or you need permission to view its data.

/jrm_info/imp_excel.asp, line 74

sendo que alinha 74 é esta

 

objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&url&""&Arq&";" & "Extended Properties=""Excel 8.0;HDR=Yes;"";"

a de conexão com a tabela

 

EDITADO

 

Pessoal, bom fazendo testes e mais testes aquia gora modificou o erro

 

Microsoft JET Database Engine error '80004005'

Could not find installable ISAM.

/jrm_info/imp_excel.asp, line 81

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa Patrique, obrigado por sua resposta, então eu tinah visto e testado este código, e o erro acima esta justamente em cima dele, veja

 

Dim intColunas, intLinhas
Dim objConn, objRs, objTable

Set objConn = Server.CreateObject("ADODB.Connection")

With objConn
 .Provider = "Microsoft.Jet.OLEDB.4.0;"
 .ConnectionString = "Data Source="&Caminho&";Extended Properties=Excel 8.0;HDR=Yes;"
  .Open
End With

Set objTable = Server.CreateObject("ADOX.Catalog")
objTable.ActiveConnection = objConn

for j = 0 to objTable.tables.count - 1
 if lcase(objTable.tables(j).Type) = "table" Then

  set objRs = Server.CreateObject("ADODB.Recordset")
  objRs.CursorLocation = 3
  objRs.Open "SELECT * FROM ["&Cstr(Ucase(objTable.tables(j).Name))&"] ",objConn
  intCount = 0
  if Not objRs.Eof Then
   intColunas  = objRs.Fields.Count
   Response.Write ("<table border=""1"">" & vbNewline)
   If intCount = 0 Then
		Response.Write ("<tr>" & vbNewline)
		For i = 0 To (intColunas-1)
		 Response.Write ("<td><font size=""1"" face=""verdana""> " & objRs.Fields(i).Name & "</td>" & vbNewline)
		next
		Response.Write ("</tr>" & vbNewline)
   End If
   Do While Not objRs.Eof  
		Response.Write ("<tr>" & vbNewline)
		For i = 0 To (intColunas-1)
		 Response.Write ("<td><font size=""1"" face=""verdana""> " & objRs.Fields(i).Value & "</td>" & vbNewline)
		Next
		response.write ("</tr>" & vbNewline)
		objRs.MoveNext
   Loop
   Response.Write ("</table>" & vbNewline)  
   Response.Write ("Nome da Tabela(Planilha):" & Cstr(Ucase(objTable.tables(j).Name)) & vbNewline)
   Response.Write ("<br/>" & vbNewline)
   Response.Write ("Total Colunas: " & intColunas & vbNewline)
   Response.Write ("<br/>" & vbNewline)
   Response.Write ("Total Linhas: " & objRs.RecordCount +1 & vbNewline) ' o +1 é por causa da primeira linha que é o name da coluna
  End If  
  objRs.Close
  Set objRs = Nothing  
  Response.Write ("<br/>")
  Response.Write ("<br/>")
 end if
next

objConn.Close
Set objConn = Nothing
Set objTable = Nothing

estou neste momento tentando falar com o Chat da LocaWeb para ver se eles por acaso não tem o componente do excel instalado, acho pouco provavel, mas sabe né?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, o erro que esta dando refere-se na abertura do arquivo, o sistema não tem permissão para a leitura, coloque este exel em uma pasta com permissão e efetue os testes.

 

No painel de controle do dominio tem a opção para dar permissão em pastas e arquivos, contacte o suporte e veja sobre isso, provavelmente problema esta na permissão.

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.