Ir para conteúdo
Fórum Script Brasil
  • 0

Ler Excel E Gravar Num Banco


fabio_jms

Pergunta

11 respostass a esta questão

Posts Recomendados

  • 0

e ae.. beleza?

dá uma olhada nesse tópico aberto:

Importar Do Excel E Mandar Pro Access

abraços

Link para o comentário
Compartilhar em outros sites

  • 0

certo..

se você conseguir fazer alguma coisa, posta ae, pois é interessante..

até mais

Link para o comentário
Compartilhar em outros sites

  • 0

Seguinte ... conectei o ASP no Excel usando esse código

<%@LANGUAGE="VBSCRIPT"%>

<%

session.lcid = 1046

Response.buffer = true

Response.Clear

Response.Expires = 0

Session.Timeout = 5

%>

<html>

<head>

<FONT size="1" face="Verdana">

<%

Const adOpenStatic = 3

Const adLockPessimistic = 2

Dim cnnExcel

Dim rstExcel

Dim I

Dim iCols

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

cnnExcel.Open "DBQ=" & Server.MapPath("teste.xls") & "; DRIVER={Microsoft Excel Driver (*.xls)};"

Set rsXLS = cnnExcel.OpenSchema(20)

rsXLS.MoveFirst

Contatos = rsXLS("TABLE_NAME")

Set rstExcel = Server.CreateObject("ADODB.Recordset")

rstExcel.Open "SELECT * FROM [" & Contatos & "]", cnnExcel , adOpenStatic, adLockPessimistic

iCols = rstExcel.Fields.Count

%>

<table border=1">

  <thead>

      <%

      For I = 0 To iCols - 1

          Response.Write "<th>"

          Response.Write rstExcel.Fields.Item(I).Name

          Response.Write "</th>" & vbCrLf

      Next 'I

      %>

  </thead>

  <%

  rstExcel.MoveFirst

  Do While Not rstExcel.EOF

      Response.Write "<tr>" & vbCrLf

      For I = 0 To iCols - 1

          Response.Write "<td>"

          Response.Write rstExcel.Fields.Item(I).Value

          Response.Write "</td>" & vbCrLf

      Next 'I

      Response.Write "</tr>" & vbCrLf

      rstExcel.MoveNext

  Loop

  %>

</table>

<%

rstExcel.Close

Set rstExcel = Nothing

cnnExcel.Close

Set cnnExcel = Nothing

%>

Problema é o seguinte eu preciso ler uma planilha excel de mais de 1000 linhas por 152 colunas ... e sempre me da erro de buffer mad.gif

Response object error 'ASP 0251 : 80004005'

Response Buffer Limit Exceeded

/adm/teste/importar_cliente.asp, line 0

Execution of the ASP page caused the Response Buffer to exceed its configured limit.

O código q estou usando é esse:

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

cnnExcel.Open "DBQ=" & Server.MapPath("xls/clientes" & data_arq & ".xls")&"; DRIVER={Microsoft Excel Driver (*.xls)};"

Set rsXLS = cnnExcel.OpenSchema(20)

rsXLS.MoveFirst

Contatos = rsXLS("TABLE_NAME")

Set rstExcel = Server.CreateObject("ADODB.Recordset")

rstExcel.Open "SELECT * FROM ["& Contatos &amp]" , cnnExcel , adOpenStatic, adLockPessimistic

iCols = rstExcel.Fields.Count ' conta o numero de colunas

' numeor de colunas é fixo em 152 ; por isso definir

'nome das colunas

' For I = 0 To iCols - 1

for I = 0 to 151

  if sql = "" then

  sql="insert into mvlead ( ["& rstExcel.Fields.Item(I).Name & "]" & ","

  else

  if I = iCols - 1 then

    sql=sql & "[" & rstExcel.Fields.Item(I).Name & "]" & ")" 'ultima coluna fecha parenteses

  else

    sql=sql & "[" & rstExcel.Fields.Item(I).Name & "]" & "," 'se não for a ultima poe virgula

  end if

  end if

Next 'I

'response.Write(sql)

' le todas as linhas q contem dados

teste = 0

rstExcel.MoveFirst

Do While Not rstExcel.EOF

'  For I = 0 To iCols - 1

  For I = 0 To 151

  if sql2 = "" then

    if isnull(rstExcel.Fields.Item(I).Value) then

    sql2 = " values ('NULL',"

    else

    sql2 = " values ('" & replace(rstExcel.Fields.Item(I).Value,"'","''") & "',"

    end if

  else

    if I = iCols - 1 then

    if isnull(rstExcel.Fields.Item(I).Value) then

      sql2 = sql2 & "'NULL')"

    else

      sql2 = sql2 & "'" & replace(rstExcel.Fields.Item(I).Value,"'","''") & "')"

    end if

    else

    if isnull(rstExcel.Fields.Item(I).Value) then

      sql2 = sql2 & " 'NULL',"

    else

      sql2 = sql2 & "'" & replace(rstExcel.Fields.Item(I).Value,"'","''") & "',"

    end if

    end if

  end if

  Next 'I

  response.Write(sql&sql2)

  'slqInsert = sql & sql2

  'conexao.execute(sqlInsert)

  'response.Write(sqlInsert&"<br><br>")

  'sqlUser=("insert into (permissao, [site id number]) values (1," & rstExcel.Fields.Item(0).Value & ")")

  'conexao.execute(sqluser)

  'response.Write(sqlUser&"<br><br>")

  rstExcel.MoveNext

Loop

rstExcel.Close

Set rstExcel = Nothing

cnnExcel.Close

Set cnnExcel = Nothing

alguém tem alguma ideia do q pode estar acontecendo?

Existe a posibilidade de eu aumentar o tamanho do buffer???

Desde já valeu ..

Link para o comentário
Compartilhar em outros sites

  • 0

tenta usar o response.buffer = true (ou false) não lembro bem como é, porque faz tempo que não uso..

testa aí..

to de saida.. mais tarde te ajudo melhor..

abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Ando com preguiça de ler os post's ultimamente, mas tenta usar paginação, para não listar os 1000 registros de uma vez só, mas sim de 10 em 10, por exemplo.

E acho que esse buffer seria algo como timedout, coisa assim... tipo, ficou muito tempo pra carregar a página, e este tempo se esgotou, dae nem exibiu nada...

Desculpe por não ter lido, mas to com mta preguiça agora...

Link para o comentário
Compartilhar em outros sites

  • 0

e ae guto.. beleza?

Bom, a ideia desse tópico, no geral, seria conectar à uma planilha do excel, e a partir disso, tratar os dados que estao nela.

Fabio, você tentou pegar uma planilha com poucos registros, e testar se o codigo funciona mesmo ?

Se funcionar com poucos dados, pode ter certeza que com mais dados tb vai funcionar..

aí, podemos tentar a paginação..

abraços

Link para o comentário
Compartilhar em outros sites

  • 0

e ae guto.. beleza?

Bom, a ideia desse tópico, no geral, seria conectar à uma planilha do excel, e a partir disso, tratar os dados que estao nela.

Fabio, você tentou pegar uma planilha com poucos registros, e testar se o codigo funciona mesmo ?

Se funcionar com poucos dados, pode ter certeza que com mais dados tb vai funcionar..

aí, podemos tentar a paginação..

abraços

Então com pouca linhas na planilha funciona que é uma beleza...

Mais eu não vou imprimir na tela o q estou lendo da planilha e sim vou fazer um insert no banco...

Como o numero de linhas é grande (umas 6000 por planilha) o script da erro ...

eu vou ter q inserir aos poucos ...

Se tiver resultados positivos posto aqui..

Valeu a todos...

Fabio

Link para o comentário
Compartilhar em outros sites

  • 0

Amigo, se seu problema é este, está resolvido:

<%

Session.Timeout = 30

Server.ScriptTimeOut = 3000

%>

Isso aí vai te dar umas 3 horas para execução do script hehe...

A propósito, estou com um problema parecido com o seu de importação de dados, como eu faria para importar de um txt? Tipo um e-mail por linha do txt e jogar no banco de dados?

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Amigo, se seu problema é este, está resolvido:

<%

Session.Timeout = 30

Server.ScriptTimeOut = 3000

%>

Isso aí vai te dar umas 3 horas para execução do script hehe...

A propósito, estou com um problema parecido com o seu de importação de dados, como eu faria para importar de um txt? Tipo um e-mail por linha do txt e jogar no banco de dados?

Abraços

Não lhe resolveria usando FSO?

Pois com FSO, você acessa arquivos..

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...