none
Exportar dos datagridview en una misma hoja

    Pregunta

  • Buenas Tardes amigos, tengo una problema  espero que me puedan ayudar.

    Estoy exportando dos grillas a excel. lo ideal es que al exportar primero se muestre la grilla pequeña y mas abajo la grilla lgrande en una misma hoja.
    he visto ejemplos para exportar archivos ,  pero solo he podido exportar un datagridview, aun no visto como puedo exportar dos en una misma hoja o quizas en hojas diferentes, pero en un mismo archivo. Por eso les pido su ayuda con este problema
    Gracias de antemano.
    Ejemplo de la grilla

    sábado, 15 de octubre de 2016 17:07

Respuestas

  • Hola:
    Para este ejemplo, necesitaras añadir estas 2 referencias de la siguiente imagen

    En un Form como el de la imagen, copia y pega el siguiente código

    Imports SpreadsheetLight
    Imports System.Data.SqlClient
    Public Class Form1
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
            Try
                ' instanciar datatables
                Dim dtProducts As New DataTable
                Dim dtEmployees As New DataTable
                Dim lsCadenaSQL As String = "Data Source=.\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True"
                ' Configuramos una conexión con el origen de datos.
                Using loConexion As New SqlConnection(lsCadenaSQL)
                    ' crear adaptadores
                    Dim DaProducts As New SqlDataAdapter("Select ProductId, ProductName, CategoryID From Products", loConexion)
                    ' utilizar el dataadapter para llenar el datatable
                    DaProducts.Fill(dtProducts)
                    Me.dgvProducts.DataSource = dtProducts
                    Dim DaEmployees As New SqlDataAdapter("Select EmployeeId, LastName From Employees", loConexion)
                    ' utilizar el dataadapter para llenar el datatable
                    DaEmployees.Fill(dtEmployees)
                    Me.dgvEmployees.DataSource = dtEmployees
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub
        Private Sub btnExportar_Click(sender As Object, e As EventArgs) Handles btnExportar.Click
            'Creamos un objeto SqlDocument
            Dim sl As New SLDocument()
            Dim dtProducts As DataTable = CType(Me.dgvProducts.DataSource, DataTable)
            Dim dtEmployees As DataTable = CType(Me.dgvEmployees.DataSource, DataTable)
            sl.ImportDataTable("C3", dtProducts, True)
            sl.ImportDataTable("H4", dtEmployees, True)
            'Guardamos el documento
            sl.SaveAs(Application.StartupPath & "\PRUEBA.XLSX")
            MessageBox.Show("FICHERO GENERADO")
        End Sub
    End Class

    El resultado es el de la imagen

    Un saludo desde Bilbo
    Carlos

    domingo, 16 de octubre de 2016 8:11
  • Hola:

     Este proceso seria muy sencillo si utilizas SpreadSheetLight un librería que te permite trabajar con archivos Excel de una forma sencilla:

    Aqui un articulo de como puedes actuar para exportar el contenido de un control DataGridView a un archivo Excel:

    Trabajar con archivos Excel desde WindowsForms (SpreadSheetLight)  

     Para exportar dos DataGridView solo crea la hoja y repite le proceso.

     Para crear un nuevo tab:

     SLDocument sl = new SLDocument();
    
     sl.AddWorksheet("Superman");


    Saludos desde Monterrey, Nuevo León, México!!!

    jueves, 20 de octubre de 2016 16:47

Todas las respuestas

  • Hola:
    Para este ejemplo, necesitaras añadir estas 2 referencias de la siguiente imagen

    En un Form como el de la imagen, copia y pega el siguiente código

    Imports SpreadsheetLight
    Imports System.Data.SqlClient
    Public Class Form1
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
            Try
                ' instanciar datatables
                Dim dtProducts As New DataTable
                Dim dtEmployees As New DataTable
                Dim lsCadenaSQL As String = "Data Source=.\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True"
                ' Configuramos una conexión con el origen de datos.
                Using loConexion As New SqlConnection(lsCadenaSQL)
                    ' crear adaptadores
                    Dim DaProducts As New SqlDataAdapter("Select ProductId, ProductName, CategoryID From Products", loConexion)
                    ' utilizar el dataadapter para llenar el datatable
                    DaProducts.Fill(dtProducts)
                    Me.dgvProducts.DataSource = dtProducts
                    Dim DaEmployees As New SqlDataAdapter("Select EmployeeId, LastName From Employees", loConexion)
                    ' utilizar el dataadapter para llenar el datatable
                    DaEmployees.Fill(dtEmployees)
                    Me.dgvEmployees.DataSource = dtEmployees
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub
        Private Sub btnExportar_Click(sender As Object, e As EventArgs) Handles btnExportar.Click
            'Creamos un objeto SqlDocument
            Dim sl As New SLDocument()
            Dim dtProducts As DataTable = CType(Me.dgvProducts.DataSource, DataTable)
            Dim dtEmployees As DataTable = CType(Me.dgvEmployees.DataSource, DataTable)
            sl.ImportDataTable("C3", dtProducts, True)
            sl.ImportDataTable("H4", dtEmployees, True)
            'Guardamos el documento
            sl.SaveAs(Application.StartupPath & "\PRUEBA.XLSX")
            MessageBox.Show("FICHERO GENERADO")
        End Sub
    End Class

    El resultado es el de la imagen

    Un saludo desde Bilbo
    Carlos

    domingo, 16 de octubre de 2016 8:11
  • amigo gracias por la respuesta pero tengo un detalle no tengo las referencias. he intentado descargarlo en web pero no encuentro el de SpreadsheetLight
    tambien mi version del vb es 2008. 
    lunes, 17 de octubre de 2016 14:44
  • Buenas amigos necesito que me ayuden con un tema que tengo varios dias

    Estoy exportando dos datagridview y si esta mostrando por separado en archivos diferentes, lo que quiero es que aparezca en una sola archivos, en hojas diferentes.  Ahi les dejo el código:

    Private Sub btnprueba_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnprueba.Click
    
            System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US")
    
            dgvVistaPrevia.SelectAll()
            dgvVistaPrevia.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText
            Clipboard.SetDataObject(dgvVistaPrevia.GetClipboardContent())
    
            appExcel = New Excel.Application
            appExcel.SheetsInNewWorkbook = 1
            wbExcel = appExcel.Workbooks.Add
            appExcel.Visible = True
    
            wbExcel.Worksheets(1).range("A1").Select()
            wbExcel.Worksheets(1).Paste()
    
            dgvComentario.SelectAll()
            dgvComentario.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText
            Clipboard.SetDataObject(dgvComentario.GetClipboardContent())
    
            
    
            appExcel = New Excel.Application
            appExcel.SheetsInNewWorkbook = 2
            wbExcel = appExcel.Workbooks.Add
            appExcel.Visible = True
    
            wbExcel.Worksheets(1).range("A1").Select()
            wbExcel.Worksheets(1).Paste()
    
    
        End Sub
    
     

    jueves, 20 de octubre de 2016 15:51
  • Hola:

     Este proceso seria muy sencillo si utilizas SpreadSheetLight un librería que te permite trabajar con archivos Excel de una forma sencilla:

    Aqui un articulo de como puedes actuar para exportar el contenido de un control DataGridView a un archivo Excel:

    Trabajar con archivos Excel desde WindowsForms (SpreadSheetLight)  

     Para exportar dos DataGridView solo crea la hoja y repite le proceso.

     Para crear un nuevo tab:

     SLDocument sl = new SLDocument();
    
     sl.AddWorksheet("Superman");


    Saludos desde Monterrey, Nuevo León, México!!!

    jueves, 20 de octubre de 2016 16:47
  • Hola:
    Mira el siguiente enlace
    https://social.msdn.microsoft.com/Forums/es-ES/ed699b5a-1cd2-464a-952e-e4e2e253f6ca/exportar-dos-datagridview-en-una-misma-hoja?forum=vbes

    Un saludo desde Bilbo
    Carlos
    jueves, 20 de octubre de 2016 21:19