Jump to content
Fórum Script Brasil
  • 0

Manipular Arquivo Csv


alexandremanowar
 Share

Question

E a e galera!

Eu preciso aprender manipular arquivos csv com o vb.net 2005 parea desktop.

É o seguinte eu tenho o arquivo csv e os dados dentro dele vem da seguinte forma:

dados1;dados2;dados3

dados4;dados5;dados6

dados7;dados8;dados9

E tenho uma tabela em mysql com os seguintes campos:

campo1,campo2,campo3

Preciso aprender como abrir esse arquivo e gravar as informações de cada linha dentro da minha tabela.

Como eu faço isso? Preciso de explicação ou tutorial para aprender por favor!

Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0

Ea e galera

Andei lendo alguns tutoriais e consegui trabalhar manipulando o arquivo, ou seja, abrir, gravar, etc.

Olha um exemplo:

Esse código Abre o arquivo:

        Dim AbrirComo As OpenFileDialog = New OpenFileDialog()
        Dim caminho As DialogResult
        Dim fluxoTexto As IO.StreamReader
        Dim Arquivo As String

        AbrirComo.Title = "Abrir Como"
        AbrirComo.FileName = "Nome do arquivo"
        AbrirComo.Filter = "Arquivos Textos (*.csv)|*.csv"

        caminho = AbrirComo.ShowDialog
        Arquivo = AbrirComo.FileName

        If Arquivo = Nothing Then
            MessageBox.Show("Arquivo inválido", "Abrir Como", MessageBoxButtons.OK)
        Else
            fluxoTexto = New IO.StreamReader(Arquivo)
            txtLinhas.Text = fluxoTexto.ReadToEnd
            txtArquivo.Text = AbrirComo.FileName
            fluxoTexto.Close()

        End If
   
Esse código escreve no arquivo:
 Dim fluxoTexto As IO.StreamWriter
        Dim linhaTexto As String

        If IO.File.Exists(txtArquivo.Text) Then
            fluxoTexto = New IO.StreamWriter(txtArquivo.Text, True)
            fluxoTexto.WriteLine(txtNovaLinha.Text)
            fluxoTexto.Close()
        Else
            MessageBox.Show("Arquivo não existe")
        End If
Esse código salva o arquivo com outro nome:
 Dim salvarComo As SaveFileDialog = New SaveFileDialog()
        Dim caminho As DialogResult
        Dim fluxoTexto As StreamWriter
        Dim Arquivo As String
        salvarComo.CheckFileExists = False
        salvarComo.Title = "Arquivos Textos (*.csv)|*.csv"
        caminho = salvarComo.ShowDialog
        Arquivo = salvarComo.FileName

        If Arquivo = Nothing Then
            MessageBox.Show("Arquivo inválido", "Salvar Como", MessageBoxButtons.OK)
        Else
            fluxoTexto = New IO.StreamWriter(Arquivo)
            fluxoTexto.Write(txtLinhas.Text)
            fluxoTexto.Close()
        End If

Preciso agora aprender o seguinte usar o código que abre o arquivo e fezer ele ler linha por linha igual o código acima e quando ele for lendo a linha ele vai gravando na tabela igual mencionei acima

Eu preciso aprender manipular arquivos csv com o vb.net 2005 parea desktop.

É o seguinte eu tenho o arquivo csv e os dados dentro dele vem da seguinte forma:

dados1;dados2;dados3

dados4;dados5;dados6

dados7;dados8;dados9

E tenho uma tabela em mysql com os seguintes campos:

campo1,campo2,campo3

Preciso aprender como abrir esse arquivo e gravar as informações de cada linha dentro da minha tabela.

Como eu faço isso? Preciso de explicação ou tutorial para aprender por favor!

Alguém pode me ajudar?

Link to comment
Share on other sites

  • 0

E aí beleza!

Então tem a opção ReadLine sim, mas o problema é como eu vou armazenar os campos do arquivo csv na tabela, o problema é que tem que separar o campos do arquivo csv tipo o arquivo csv esta com os seguintes dados

dados1;dados2;dados3

dados4;dados5;dados6

e tenho uma tabela em mysql com 3 campos que são

campo1,campo2,campo3.

Preciso fazer um código que abra o arquivo csv e quebre a linha onde esta o ponto e vírgula e armazene a informação na tabela logo a tabela fica assim

-------------------------------

|campo1|campo2|campo3|

-------------------------------

|dados1 |dados2 |dados3 |

|dados4 |dados5 |dados6 |

-------------------------------

O problema é que não estou conseguindo fazer isso, preciso ler o arquivo csv quebrar os dados onde a divisão é o ";" e armazenar na tabela.

Você pode me ajudar?

Link to comment
Share on other sites

  • 0

há está. Faz o seguinte: passa o conteúdo para string, e existe uma função chamada Split(). Ela divide uma determinada string em parte (em um array de strings) de acordo com um caracter delimitador, ou mesmo quebrador de strings, que você tem que passar por parâmetro. Um exemplo aí:

Dim jaba as String

jaba = "Andersonjb-é-gostoso-!"

jaba.Split("-")

Eu não lembro bem se era assim porque eu to sem o Visual Studio aqui e não dá pra eu testar, mais é mais ou menos isso.

Aqui tem um post de Exemplo:

http://scriptbrasil.com.br/forum/index.php...95&hl=Split

E se você pesquisar tem outros post's sobre isso!

Falows!

Link to comment
Share on other sites

  • 0

Cara valeu pela força e o link que você deixou, achei também uns tutoriais na net e consegui fazer.

Porém agora estou me deparando com outro problema que é o seguinte:

O programa que estou fazendo abre o arquivo csv e armazena em um banco de dados, porém os arquivos csv são grandes por exemplo todos eles tem 41 colunas, a quantidade de linhas é variável.

Eu fiz um teste com um arquivo de 2000 linhas e o programa funcionou normal porém, fiz teste com um de 4.730, e ele armazenou tudo no banco mas assim que ele termina de armazenar ele deu uma MSN de erro que é seguinte

Imagem da MSN de erro:

Imegem do MSN de erro

Pelo que eu entendi ele excedeu alguma coisa mas o que?

Já fiz teste tipo quebrando a linha do insert com & _ mas não funcionou dei na mesma.

o interessante é que ele armazena tudo numa boa depois de armazenar é que da esse problema.

Por que esse erro e como corrijo?

Veja meu código:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
   
        conn.Open()


        Dim AbrirComo As OpenFileDialog = New OpenFileDialog()
        Dim caminho As DialogResult
        Dim Arquivo As String

        AbrirComo.Title = "Abrir arquivo como"
        AbrirComo.FileName = "Nome do Arquivo"
        AbrirComo.Filter = "Arquivos CSV (*.csv)|*.csv"

        caminho = AbrirComo.ShowDialog
        Arquivo = AbrirComo.FileName

        Dim Valor As New IO.StreamReader(Arquivo)
        Dim Ler As String = Valor.ReadToEnd()
        Dim Linhas As String() = Ler.Split(vbCrLf)
        Dim Qt_linhas As Integer = Linhas.Length

        For Each linha As String In Linhas

            '' MessageBox.Show("Armazenando a linha: " & cont & "Valores:" & linha)
            Dim analisar As String = linha
            Dim quebra As String() = analisar.Split(";")
           
            Dim cmd As New MySqlCommand("INSERT INTO acompanhamento_agricola (produto,proposta_renovada,proposta,proposta_id,data_contratacao,agencia_id,nome_agencia,nome_segurado,endereco,bairro,cidade,uf,cep,ddd,fone,cpf_cnpj,email,nome_propriedade,endereco_propriedade,municipio_propriedade,uf_propriedade,cultura,cultivo,irrigacao,produtividade_esperada,produtividade_segurada,area,valor_orcamento,area_total_plantada,seguro_subvencao_governo_federal,inicio_plantio,numero_contrato_financiamento,vigencia_contrato_financiamento,area_plantada_mais_ano,cultura_intercalada_conserciada,adesao_zoagro,sementes_certificadas,rta_cliente,premio_bruto,premio_liquido,sinistros_avisados)VALUES('" & Trim(quebra(0)) & "','" & Trim(quebra(1)) & "','" & Trim(quebra(2)) & "','" & Trim(quebra(3)) & "','" & Trim(quebra(4)) & "','" & Trim(quebra(5)) & "','" & Trim(quebra(6)) & "','" & Trim(quebra(7)) & "','" & Trim(quebra(8)) & "','" & Trim(quebra(9)) & "','" & Trim(quebra(10)) & "','" & Trim(quebra(11)) & "','" & Trim(quebra(12)) & "','" & Trim(quebra(13)) & "','" & Trim(quebra(14)) & "','" & Trim(quebra(15)) & "','" & Trim(quebra(16)) & "','" & Trim(quebra(17)) & "','" & Trim(quebra(18)) & "','" & Trim(quebra(19)) & "','" & Trim(quebra(20)) & "','" & Trim(quebra(21)) & "','" & Trim(quebra(22)) & "','" & Trim(quebra(23)) & "','" & Trim(quebra(24)) & "','" & Trim(quebra(25)) & "','" & Trim(quebra(26)) & "','" & Trim(quebra(27)) & "','" & Trim(quebra(28)) & "','" & Trim(quebra(29)) & "','" & Trim(quebra(30)) & "','" & Trim(quebra(31)) & "','" & Trim(quebra(32)) & "','" & Trim(quebra(33)) & "','" & Trim(quebra(34)) & "','" & Trim(quebra(35)) & "','" & Trim(quebra(36)) & "','" & Trim(quebra(37)) & "','" & Trim(quebra(38)) & "','" & Trim(quebra(39)) & "','" & Trim(quebra(40)) & "')", conn)
            Try
                cmd.ExecuteNonQuery()

            Catch ex As Exception
                MsgBox("Erro ao conectar", MsgBoxStyle.Critical, "Erro Fatal")
            End Try

        Next
        MsgBox("Dados armazenados com sucesso", MsgBoxStyle.Information, "Finalizado")

        conn.Close()
       
       

    End Sub

Como corrigir?

Link to comment
Share on other sites

  • 0

E aí pessoal.

Achei o problema. Ele da essa MSN de erro porque a última da linha do meu arquivo é vazia! Ou seja não tem nada. Quando eu testei com menas linha eu acabei excluindo a linha vazia e ficou apenas linhas com informações. Porém o arquivo veio com 4731 mas é apenas 4730 linha com informação a última é vazia. Como eu faço para ele não tentar armazenar a linha vazia? Preciso fazer algo para ignorar a linha vazia porque o arquivo que tenho aqui é para teste, no cliente ele não vai ficar abrindo arquivo, preciso validar isso!

Alguém pode me ajudar?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      151k
    • Total Posts
      649k
×
×
  • Create New...