Ir para conteúdo

POWERED BY:

Arquivado

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

andreia_sp

Lendo excel - problemas

Recommended Posts

Bom dia pessoal,

 

Estou com um problema que está me deixando maluca já. Tenho um Excel e preciso lê-lo e jogá-lo em formato txt. Beleza, funciona só que o único e maior problema: quando a primeira linha – de qualquer coluna – for null, todo o resto da coluna, mesmo tendo valor, fica tudo null!

Já tentei de tudo quanto é forma, mudando a conexão, usando fso, sem, apenas com Excel, tentei fazer update mas ele simplesmente ignora tudo.

Alguém tem alguma sugestão para resolver isso? Eu já achei uma saída que realmente ficará difícil de usar: pedir pro usuário inserir valor 0 quando não tiver nada naquela coluna. Gostaria de achar uma solução pelo sistema e não via usuário.

 

obrigada

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente verficar antes se é IsNull, ela devolve True ou False, a indicar se uma variável não contém dados válidos 'Null'.

Compartilhar este post


Link para o post
Compartilhar em outros sites

como você esta recuperando os dados ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desta forma:

 

<%
    response.charset = "iso-8859-1"
    Response.Clear
    Response.Buffer = True
    Response.CacheControl = "no-cache"
    Response.AddHeader "Pragma", "no-cache"
    Response.Expires = -1
    

    Set objUpload = server.CreateObject("Dundas.Upload.2")
    objUpload.MaxFileSize = 300048576     
    objUpload.UseVirtualDir = true
    objUpload.UseUniqueNames = true
    objUpload.Save "/docs"
    
    For Each File in objUpload.Files 
        arquivo = objUpload.GetFileName(File.Path) 
    Next

    Set objUpload = Nothing

    Set oADOX = CreateObject("ADOX.Catalog")
    strSQLStatement = "Select * from [nome_sheet$]"
    Set objAdCon = CreateObject("ADODB.Connection")
    objAdCon.Open "DRIVER={Microsoft Excel Driver (*.xls)}; DBQ="&server.MapPath(arquivo)& "; Readonly=True"
    Set objAdRs = CreateObject("ADODB.Recordset")
    objAdRs.CursorLocation=3
    objAdRs.Open strSQLStatement, objAdCon, 1, 3
    oADOX.ActiveConnection = objAdCon

    if instr(oADOX.Tables(0).name,"nome_sheet") = 0 then
        response.write "Arquivo Inválido"
        response.end
    end if

    Set fso = CreateObject("Scripting.FileSystemObject") 
    arquivo = "txt_"& arquivo
    Set txt = fso.CreateTextFile(server.MapPath(arquivo),True)

    txt.WriteLine "Coluna1"&vbtab&"Coluna2"&vbtab&"Coluna3"&vbtab&"Coluna4"&vbtab&"Coluna5"

    
    While not objAdRs.EOF 
        coluna1            =  cstr(objAdRs(0)&"")
        coluna2            =  cstr(objAdRs(1)&"")
        coluna3            =  cstr(objAdRs(2)&"")
        coluna4            =  cstr(objAdRs(3)&"")
        coluna5            =  cstr(objAdRs(4)&"")
        
        txt.WriteLine coluna1&vbtab&coluna2&vbtab&coluna3&vbtab&coluna4&vbtab&coluna5
        
    objAdRs.movenext
    wend
%>

ele pega a formatação da primeira linha e aplica a tudo, entao quando nulo ele aplica em tudo. o mais estranho é que isso só acontece no ambiente de produção, no desenvolvimento funciona certo. Será algum problema com IIS ou driver ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Andréia, poque não faz a verificação, tipo... verifica se o primeiro valor é null se for manda ler a partir do segundo que dai evita erro.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso foi falado no post #2

Compartilhar este post


Link para o post
Compartilhar em outros sites

quebrando a cabeça mais um pouco, cheguei a conclusão que o problema é a maldita formatação do excel. Por exemplo, o usuario faz o download do modelo, completa os valores, e envia o excel para o sistema que faz a extração dos dados e insere na base. Se a coluna X está formatada como money, o usuario só pode inserir valores no formato money. ok. Formatei o modelo para TEXT, só que aí vem outro provavel problema, se o usuario for colar algum valor, ou os dados vir por vlookup ? A formatação ficará diferente e consequentemente recebo null naquela célula!

gente nao é possivel que aconteça uma coisas dessas nao faz sentido ser assim, porque a formatação vai interferir tanto desta forma?!!!

 

eu ACHO que consegui! pelo menos nos ultimos testes nao deu problema.

Consultando o link: http://support.microsoft.com/kb/260239/pt-br

adicionei:

response.Buffer = TRUE
    Response.ContentType = "application/vnd.ms-excel"

quando tiver certeza passo aqui pra avisar, desde já agradeç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.