none
Salvar Como e Abrir DataSet ou gridview RRS feed

  • Pergunta

  • Eu tenho um datagridview que salva os dados em um dataset, porem gostaria de adicionar um botão de salvar como e outro para abrir meu datagridview. O meu programa só armazena dados enquanto estar aberto, serve apenas pra fazer alguns cálculos, mas gostaria de dar a opção pro usuário de salvar os dados que ele digitou no datagrid para usar posteriormente caso ele queria, tipo o salvar como e abrir do word, excell, power point, etc.... Pensei em exportar pra um .txt ou tipo criar um novo dataset. Alguém pode me ajudar?
    segunda-feira, 25 de julho de 2016 14:27

Respostas

  • Boa tarde AgnaldoMatos,

    Obrigado por sua participação no Fórum MSDN.

    Você pode tentar adaptar e utilizar o seguinte código:

    Public Class Form1
    
        Dim ThisFilename As String = Application.StartupPath & "\MyData.dat"
    
        Private Sub butSalva_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butSave.Click
            SaveGridData(DataGridView1, ThisFilename)
        End Sub
    
        Private Sub butAbre_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butLoad.Click
            LoadGridData(DataGridView1, ThisFilename)
        End Sub
    
        Private Sub SaveGridData(ByRef ThisGrid As DataGridView, ByVal Filename As String)
            ThisGrid.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithoutHeaderText
            ThisGrid.SelectAll()
            IO.File.WriteAllText(Filename, ThisGrid.GetClipboardContent().GetText.TrimEnd)
            ThisGrid.ClearSelection()
        End Sub
    
        Private Sub LoadGridData(ByRef ThisGrid As DataGridView, ByVal Filename As String)
            ThisGrid.Rows.Clear()
            For Each THisLine In My.Computer.FileSystem.ReadAllText(Filename).Split(Environment.NewLine)
                ThisGrid.Rows.Add(Split(THisLine, "	"))
            Next
        End Sub
    
    End Class

    Atenciosamente,

    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    segunda-feira, 25 de julho de 2016 18:33
    Moderador
  • Eu achei um método que exporta e importa o gridview para excell, testei aqui e funcionou, irei deixar esse método.

    Obrigado pela ajuda.

    e caso alguém precise o código para exportar e importar para excell é esse: 

        'Importa Gridview momentos
    
        Private Sub MomentosToolStripMenuItem1_Click(sender As Object, e As EventArgs) Handles MomentosToolStripMenuItem1.Click
    
            OpenFileDialog1.Filter = "Arquivos Excel | *.xlsx"
            OpenFileDialog1.Title = "Selecione o Arquivo"
            OpenFileDialog1.Multiselect = False
            OpenFileDialog1.FileName = ""
    
    
            If OpenFileDialog1.ShowDialog(Me) = DialogResult.OK Then
    
            End If
    
            'Faz conexão com a planilha, ler os dados e joga no gridview
            Try
                Dim stConexion As String = ("Provider=Microsoft.ACE.OLEDB.12.0;" & ("Data Source=" & (OpenFileDialog1.FileName & ";Extended Properties=""Excel 12.0;Xml;HDR=YES;IMEX=2"";")))
                Dim cnConex As New OleDbConnection(stConexion)
                Dim Cmd As New OleDbCommand("Select * From [Plan1$]")
                Dim Ds As New DataSet
                Dim Da As New OleDbDataAdapter
                Dim Dt As New DataTable
                cnConex.Open()
                Cmd.Connection = cnConex
                Da.SelectCommand = Cmd
                Da.Fill(Ds)
                Dt = Ds.Tables(0)
                MomentosDataGridView.DataSource = Dt.DefaultView 'Carrega o gridview com o arquivo selecionado
            Catch ex As Exception
                MsgBox(ex.Message, MsgBoxStyle.Critical, "Error")
            End Try
        End Sub

    'Comando para exportar gridview momentos
    
        Public Sub Exportar_momentos(ByVal dgv As DataGridView, ByVal pth As String)
            Dim xlApp As Object = CreateObject("Excel.Application")
            'crear una nueva hoja de calculo 
            Dim xlWB As Object = xlApp.WorkBooks.add
            Dim xlWS As Object = xlWB.WorkSheets(1)
            'exportamos los caracteres de las columnas 
            For c As Integer = 0 To MomentosDataGridView.Columns.Count - 1
                xlWS.cells(1, c + 1).value = MomentosDataGridView.Columns(c).HeaderText
            Next
            'exportamos las cabeceras de columnas 
            For r As Integer = 0 To MomentosDataGridView.RowCount - 1
                For c As Integer = 0 To MomentosDataGridView.Columns.Count - 1
                    xlWS.cells(r + 2, c + 1).value = MomentosDataGridView.Item(c, r).Value
                Next
            Next
            'guardamos la hoja de calculo en la ruta especificada 
            xlWB.saveas(pth)
            xlWS = Nothing
            xlWB = Nothing
            xlApp.quit()
            xlApp = Nothing
        End Sub
    
    
    'Botão salvar gridview momentos
        Private Sub MomentosToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles MomentosToolStripMenuItem.Click
            Savedata.Filter = "Arquivos Excel | *.xlsx"
            Savedata.Title = "Escolha o nome do Arquivo"
            Savedata.FileName = ""
    
    
    
            If Savedata.ShowDialog(Me) = DialogResult.OK Then
                Exportar_momentos(Me.MomentosDataGridView, Savedata.FileName)
    
            End If
        End Sub

    • Marcado como Resposta AgnaldoMatos sábado, 30 de julho de 2016 16:29
    sábado, 30 de julho de 2016 16:28

Todas as Respostas

  • Boa tarde AgnaldoMatos,

    Obrigado por sua participação no Fórum MSDN.

    Você pode tentar adaptar e utilizar o seguinte código:

    Public Class Form1
    
        Dim ThisFilename As String = Application.StartupPath & "\MyData.dat"
    
        Private Sub butSalva_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butSave.Click
            SaveGridData(DataGridView1, ThisFilename)
        End Sub
    
        Private Sub butAbre_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butLoad.Click
            LoadGridData(DataGridView1, ThisFilename)
        End Sub
    
        Private Sub SaveGridData(ByRef ThisGrid As DataGridView, ByVal Filename As String)
            ThisGrid.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithoutHeaderText
            ThisGrid.SelectAll()
            IO.File.WriteAllText(Filename, ThisGrid.GetClipboardContent().GetText.TrimEnd)
            ThisGrid.ClearSelection()
        End Sub
    
        Private Sub LoadGridData(ByRef ThisGrid As DataGridView, ByVal Filename As String)
            ThisGrid.Rows.Clear()
            For Each THisLine In My.Computer.FileSystem.ReadAllText(Filename).Split(Environment.NewLine)
                ThisGrid.Rows.Add(Split(THisLine, "	"))
            Next
        End Sub
    
    End Class

    Atenciosamente,

    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    segunda-feira, 25 de julho de 2016 18:33
    Moderador
  • Obrigado, Robson.

    Estarei tentando hoje a noite, falo se deu certo amanhã.

    terça-feira, 26 de julho de 2016 14:05
  • Não deu certo.
    quinta-feira, 28 de julho de 2016 12:00
  • Bom dia AgnaldoMatos,

    Foi apresentado algum erro? O que exatamente não funcionou?

    Atenciosamente,


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quinta-feira, 28 de julho de 2016 13:22
    Moderador
  • Não aceita o IO.file.

    fala que não é membro do do itexsharp.text.io

    sexta-feira, 29 de julho de 2016 23:15
  • Eu achei um método que exporta e importa o gridview para excell, testei aqui e funcionou, irei deixar esse método.

    Obrigado pela ajuda.

    e caso alguém precise o código para exportar e importar para excell é esse: 

        'Importa Gridview momentos
    
        Private Sub MomentosToolStripMenuItem1_Click(sender As Object, e As EventArgs) Handles MomentosToolStripMenuItem1.Click
    
            OpenFileDialog1.Filter = "Arquivos Excel | *.xlsx"
            OpenFileDialog1.Title = "Selecione o Arquivo"
            OpenFileDialog1.Multiselect = False
            OpenFileDialog1.FileName = ""
    
    
            If OpenFileDialog1.ShowDialog(Me) = DialogResult.OK Then
    
            End If
    
            'Faz conexão com a planilha, ler os dados e joga no gridview
            Try
                Dim stConexion As String = ("Provider=Microsoft.ACE.OLEDB.12.0;" & ("Data Source=" & (OpenFileDialog1.FileName & ";Extended Properties=""Excel 12.0;Xml;HDR=YES;IMEX=2"";")))
                Dim cnConex As New OleDbConnection(stConexion)
                Dim Cmd As New OleDbCommand("Select * From [Plan1$]")
                Dim Ds As New DataSet
                Dim Da As New OleDbDataAdapter
                Dim Dt As New DataTable
                cnConex.Open()
                Cmd.Connection = cnConex
                Da.SelectCommand = Cmd
                Da.Fill(Ds)
                Dt = Ds.Tables(0)
                MomentosDataGridView.DataSource = Dt.DefaultView 'Carrega o gridview com o arquivo selecionado
            Catch ex As Exception
                MsgBox(ex.Message, MsgBoxStyle.Critical, "Error")
            End Try
        End Sub

    'Comando para exportar gridview momentos
    
        Public Sub Exportar_momentos(ByVal dgv As DataGridView, ByVal pth As String)
            Dim xlApp As Object = CreateObject("Excel.Application")
            'crear una nueva hoja de calculo 
            Dim xlWB As Object = xlApp.WorkBooks.add
            Dim xlWS As Object = xlWB.WorkSheets(1)
            'exportamos los caracteres de las columnas 
            For c As Integer = 0 To MomentosDataGridView.Columns.Count - 1
                xlWS.cells(1, c + 1).value = MomentosDataGridView.Columns(c).HeaderText
            Next
            'exportamos las cabeceras de columnas 
            For r As Integer = 0 To MomentosDataGridView.RowCount - 1
                For c As Integer = 0 To MomentosDataGridView.Columns.Count - 1
                    xlWS.cells(r + 2, c + 1).value = MomentosDataGridView.Item(c, r).Value
                Next
            Next
            'guardamos la hoja de calculo en la ruta especificada 
            xlWB.saveas(pth)
            xlWS = Nothing
            xlWB = Nothing
            xlApp.quit()
            xlApp = Nothing
        End Sub
    
    
    'Botão salvar gridview momentos
        Private Sub MomentosToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles MomentosToolStripMenuItem.Click
            Savedata.Filter = "Arquivos Excel | *.xlsx"
            Savedata.Title = "Escolha o nome do Arquivo"
            Savedata.FileName = ""
    
    
    
            If Savedata.ShowDialog(Me) = DialogResult.OK Then
                Exportar_momentos(Me.MomentosDataGridView, Savedata.FileName)
    
            End If
        End Sub

    • Marcado como Resposta AgnaldoMatos sábado, 30 de julho de 2016 16:29
    sábado, 30 de julho de 2016 16:28