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

Manipular Arquivo Csv


alexandremanowar

Pergunta

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 para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 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
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...