Ir para conteúdo

POWERED BY:

Arquivado

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

marcelinho

[Resolvido] como ler um csv

Recommended Posts

Fala ae galera,eu to apanhando para ler um csv aqui alguem poderia me ajudar?esse é todo o meu codigo ;

<%		Set Session("Conn") = Server.CreateObject("ADODB.Connection")		Session("Conn").Open "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _		"Dbq=caminho\csv\;" & _		"Extensions=asc,csv,tab,txt;" & _		"Persist Security Info=False"		Str_SQL_Cmd = "SELECT * FROM teste.csv"		Set rsCSV = Session("conn").Execute(Str_SQL_Cmd)%>
ele da esse erro:

Microsoft VBScript compilation error '800a0408' Invalid character

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara usa FSO (FileSystemObject) para isso, será bem mais simples.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depois de mto apanhar eu consegui fazer, vou colocar aqui para caso alguem tenha um mesmo problema que eu futuramente:<% Set RS_CVS = Server.CreateObject("ADODB.Recordset") Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _ "Dbq=caminhodapastaondeestaocsv;" & _ "Extensions=asc,csv,tab,txt;" & _ "Persist Security Info=False;" RS_CVS.Open "Select * From arquivo.csv", Conn 'dai é so recuperar os campos normais como se fosse um banco de dados%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

No proprio code aponta

 

repare nesta linha

 

"Dbq=caminhodapastaondeestaocsv;" & _

"Dbq=caminhodapastaondeestaocsv;" & _

 

Para ler um arquivo cvs por fso seria mais ou menos assim

 

<%
dim arquivocsv,contador,linha,fso,objFile

arquivocsv = "arquivo.csv"

set fso = createobject("scripting.filesystemobject")
set objFile = fso.opentextfile(server.mappath(arquivocsv))

strimportando = "<table cellpadding=""3"" cellspacing=""1"" border=""1"">"

Do Until objFile.AtEndOfStream
      linha = split(objFile.ReadLine,",")
      strimportando = strimportando & "<tr>"
   totalregistros = ubound(linha)
   for i=0 to totalregistros
      if i>0 then
         strimportando = strimportando & "<td>" & linha(i) & "</td>"
      else
         strimportando = strimportando & "<th>"&linha(i) & "</th>"
      end if
   next
      strimportando = strimportando & "</tr>" & chr(13)
Loop

strimportando = strimportando & "<caption>Total de Resgitros: " & totalregistros & "</caption></table>"

objFile.Close

response.Write strimportando
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Viu, não deu certo, ta dando um caractere inválido na linha 12

 

Tipo de erro:

Erro de compilação do Microsoft VBScript (0x800A0408)

Caractere inválido

/fazer/Default.asp, line 12

linha = split(objFile.ReadLine,";")

Compartilhar este post


Link para o post
Compartilhar em outros sites

Velho testei aqui e deu certo, veja como eu testei

 

<%
Set RS_CVS = Server.CreateObject("ADODB.Recordset")
Set Conn = Server.CreateObject("ADODB.Connection")

Conn.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
"Dbq=C:\Inetpub\riosul\cvs;" & _
"Persist Security Info=False;"

RS_CVS.Open "Select * From arquivo.csv", Conn

Response.Write "Valor: " & RS_CVS("Nome")
%>

Meu arquivo.cvs esta com este conteúdo

 

nome

aaaa

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dar certo deu. O sistema "entrou" no arquivo o problema na verdade e outro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara não uso nem msn e nem skype

 

Veja funcionando online

 

http://migre.me/5xn0

 

Faça o download do arquivo abaixo e testa, lembrando que você deve modificar o caminho, apontando para o caminho fisico de aonde se encontra o que você estara testanto.

 

http://migre.me/5xnd

 

Desta forma você tera uma noção melhor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, deu tudo certo, o que acontece agora é o seguinte, eu criei um AJAX onde envia o caminho e joga pro ASP só que não está abrindo, está dando erro:

 

Erro geral Não é possível abrir a chave 'Temporary (volatile) Jet DSN for process 0x6d0 Thread 0x4c8 DBC 0x1228f74 Text' do Registro.

/fazer/arquivo.asp, line 7

 

<%
ARQ = "C:\Inetpub\wwwroot\fazer\arquivo.csv"

Set RS_CVS = Server.CreateObject("ADODB.Recordset")
Set Conn = Server.CreateObject("ADODB.Connection")

Conn.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq= '"&ARQ&"'; Persist Security Info=False;"

RS_CVS.Open "Select * From arquivo.csv", Conn

	Do
		If RS_CVS.Eof = True Then Exit Do
Response.Write "Nome: " & RS_CVS("Nome") & "<br>"
response.write "Email: " & RS_CVS("Email") & "<br><br>"
	RS_CVS.Movenext
	Loop
%>

Conn.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq= '"&ARQ&"'; Persist Security Info=False;"

Esta linha não está abrindo o arquivo, pq?

 

cara, foi mal, já achei o pq........kkkkkkkkkkk, eu enviei o arquivo junto também né.....derrrrrrrrrr

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mano é como eu disse, colque apenas a pasta aonde esta assim

 

ARQ = "C:\Inetpub\wwwroot\fazer\arquivo.csv"

deixe assim

 

ARQ = "C:\Inetpub\wwwroot\fazer"

A expecificação dizendo qual é o arquivo esta no select

 

RS_CVS.Open "Select * From arquivo.csv", Conn

Por isso você não deve expecificar o nome no caminho, coloque apenas a pasta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o problema agora é tirar apenas o caminho do arquivo, como posso fazer isso, pq quando eu clicar em enviar, o caminho vai completo entendeu? Eu to fazendo isso com Ajax, veja:

 

default.asp

<script language="javascript">
function ajaxInit() {
        var req;
        try {
            req = new ActiveXObject("Microsoft.XMLHTTP");
        } catch(e) {
            try {
                req = new ActiveXObject("Msxml2.XMLHTTP");
            } catch(ex) {
                try {
                    req = new XMLHttpRequest();
                } catch(exc) {
                    alert("Esse browser não suporta Ajax");
                    req = null;
                }
            }
        }
        return req;
    }

    function lerValor(valor){
        valor = ajaxInit();
        valor.open("GET",'arquivo.asp?arquivo='+valor, true);
        valor.onreadystatechange=function() {
              if (valor.readyState==1){
            document.getElementById("vvalor");
            }
            if ((valor.readyState==4) && (valor.status==200)){
        
            document.getElementById("ler_Valor").innerHTML = valor.responseText;
            }
        }
        valor.send(null);
    }
</script>

<div id="vvalor"></div>
<div id="ler_Valor"></div>
<form name="formulario" id="formulario" method="POST" action="javascript:CadastrarDados();" enctype="multipart/form-data">
	<p><input type="file" name="arquivo" id="arquivo" size="20"></p>
	<p><input type="button" value="Enviar" name="B1" onClick="lerValor(document.getElementById('arquivo').value);"></p>
</form>

arquivo.asp

<%
ARQ=Request.QueryString("arquivo")

Set RS_CVS = Server.CreateObject("ADODB.Recordset")
Set Conn = Server.CreateObject("ADODB.Connection")

Conn.Open "Driver={Microsoft Text Driver (*.txt; *.csv)}; Dbq="&ARQ&"; Persist Security Info=False;"

RS_CVS.Open "Select * From arquivo.csv", Conn

	Do
		If RS_CVS.Eof = True Then Exit Do
Response.Write "Nome: " & RS_CVS("Nome") & "<br>"
response.write "Email: " & RS_CVS("Email") & "<br><br>"
	RS_CVS.Movenext
	Loop
%>

O que eu posso fazer pra na hora que eu pegar a string, eu tirar apenas o arquivo e aproveitar apenas o caminho?

Compartilhar este post


Link para o post
Compartilhar em outros sites

cAra, já sei o que vou fazer, vou dar trabalho pra quem vai usar mesmo,, ao invés de um campo FILE, vou por um text, e o cara que copie e cole o caminho e o arquivo, assim posso jogar qualquer arquivo e qualquer caminho.

Valeu mesmo.

[concluido]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para quem quiser usar algo semelhante, segue o código:

 

default.asp

<head>
<meta http-equiv="Content-Language" content="pt-br">
</head>

<script language="javascript">
function ajaxInit() {
        var req;
        try {
            req = new ActiveXObject("Microsoft.XMLHTTP");
        } catch(e) {
            try {
                req = new ActiveXObject("Msxml2.XMLHTTP");
            } catch(ex) {
                try {
                    req = new XMLHttpRequest();
                } catch(exc) {
                    alert("Esse browser não suporta Ajax");
                    req = null;
                }
            }
        }
        return req;
    }

    function lerValor(caminho,arquivo){
        valor = ajaxInit();
        valor.open("GET",'arquivo.asp?caminho='+caminho+'&arquivo='+arquivo, true);
        valor.onreadystatechange=function() {
              if (valor.readyState==1){
            document.getElementById("vvalor");
            }
            if ((valor.readyState==4) && (valor.status==200)){
        
            document.getElementById("ler_Valor").innerHTML = valor.responseText;
            }
        }
        valor.send(null);
    }
</script>

<div id="vvalor"></div>
<div id="ler_Valor"></div>
<form name="formulario" id="formulario" method="POST" action="javascript:CadastrarDados();" enctype="multipart/form-data">
	<p>CAMINHO: <input type="text" id="caminho" size="50"><br> ARQUIVO:  <input type="text" id="arquivo" size="30"></p>
	<p><input type="button" value="Enviar" name="B1" onClick="lerValor(document.getElementById('caminho').value,document.getElementById('arquivo').value);"></p>
</form>

arquivo.asp

<%
CAMINHO = request.querystring("caminho")
ARQUIVO = request.querystring("arquivo")

Set RS_CVS = Server.CreateObject("ADODB.Recordset")
Set Conn = Server.CreateObject("ADODB.Connection")

Conn.Open "Driver={Microsoft Text Driver (*.txt; *.csv)}; Dbq="&CAMINHO&"; Persist Security Info=False;"

RS_CVS.Open "Select * From "&ARQUIVO, Conn

	Do
		If RS_CVS.Eof = True Then Exit Do
Response.Write "Nome: " & RS_CVS("Nome") & "<br>"
response.write "Email: " & RS_CVS("Email") & "<br><br>"
	RS_CVS.Movenext
	Loop
%>

Está em perfeito funcionamento.

Valeu por tudo Patrique.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o code foi inserido no laboratorio de script...

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.