Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: katsumoto en 20 de Abril 2016, 20:27

Título: exportar datos a libros excel en vb.net Visual Basic Microsoft.Office.Interop.Ex
Publicado por: katsumoto en 20 de Abril 2016, 20:27
Buenas a todos/as estoy haciendo una aplicacion en la que necesito rellenar con datos de una BD una hoja prediseñada en excel por ejemplo nombre: lo cojo de la db apellidos: lo mismo etc, alguien me podria orientar o recomendarme algun articulo para estudiarlo???

Gracias de antemano
Título: Re:exportar datos a libros excel desde vb.net
Publicado por: César Krall en 22 de Abril 2016, 22:26
Hola! Este hilo quizás te ayude: https://www.aprenderaprogramar.com/foros/index.php?topic=2444.0

Saludos

Título: Re:exportar datos a libros excel desde vb.net
Publicado por: katsumoto en 25 de Abril 2016, 13:47
gracias por la respuesta ya he podido exportar bien, pero ahora se me presenta otro problema me gustaria que me orientarais como hacer para que llegado a un numero determinado de filas me añadiera una fila mas para no sobre escribir sobre la fila de totales

este es el codigo con el que exporto
Código: [Seleccionar]
Dim exApp As New Microsoft.Office.Interop.Excel.Application
        Dim exLibro As Microsoft.Office.Interop.Excel.Workbook
        Dim exHoja As Microsoft.Office.Interop.Excel.Worksheet
        Dim contador_reg As Integer
        Try

            exLibro = exApp.Workbooks.Open(My.Application.Info.DirectoryPath + "\excel\cursos.xls")
            exHoja = exLibro.Worksheets(1)
            ' ¿Cuantas columnas y cuantas filas?
            Dim NCol As Integer = DGV.ColumnCount
            Dim NRow As Integer = DGV.RowCount
            exHoja.Cells(1, 5).value = lugar_eve.Text
            exHoja.Cells(1, 6).value = fecha_eve.Text
            For Fila As Integer = 0 To NRow - 1
                contador_reg = contador_reg + 1
                For Col As Integer = 0 To NCol - 1
                    ' pasa los datos a la hoja de excel
                    exHoja.Cells(Fila + 3, 1) = contador_reg
                    exHoja.Cells.Item(Fila + 3, Col + 2) = DGV.Rows(Fila).Cells(Col).Value()
                Next

            Next

            exApp.Application.Visible = True
            exHoja = Nothing
            exLibro = Nothing
            exApp = Nothing


        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, "Error al exportar a Excel")

            Return False
        End Try
        Return True
Título: Re:exportar datos a libros excel en vb.net Visual Basic Microsoft.Office.Interop.Ex
Publicado por: César Krall en 27 de Abril 2016, 09:27
Hola!

No entiendo muy bien a qué te refieres, ¿el fichero excel tiene algún contenido previo? ¿Quieres añadir una fila vacía después de la última fila exportada o antes de la última fila exportada?

Te dejo un código a ver si te ayuda

Código: [Seleccionar]
Imports Excel = Microsoft.Office.Interop.Excel

Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Label1.Text = ""
        Label1.AutoSize = False
    End Sub
   
    Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim objXLApp As Excel.Application
        Dim intLoopCounter As Integer
        Dim objXLWb As Excel.Workbook
        Dim objXLWs As Excel.Worksheet
        Dim objRange As Excel.Range

        objXLApp = New Excel.Application
        objXLApp.Workbooks.Open("C:\Users\Cesar\CursoVB\ejemplo.xlsx")
        objXLWb = objXLApp.Workbooks(1)
        objXLWs = objXLWb.Worksheets(1)
        MsgBox("Ahora la celda A5 contiene: " & objXLWs.Cells(5, 1).value)
        For intLoopCounter = 1 To CInt(objXLWs.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell).Row)
            objRange = objXLWs.Range("A" & intLoopCounter)
            Label1.Text = Label1.Text & vbCrLf & objRange.Value
            objRange = objXLWs.Range("B" & intLoopCounter)
            Label1.Text = Label1.Text & " -- > " & objRange.Value
        Next intLoopCounter

        'Escribimos en el fichero
        objXLWs.Cells(5, 1) = "Esto es una prueba"
        MsgBox("Ahora la celda A5 contiene: " & objXLWs.Cells(5, 1).value)
        objXLApp.Quit()
    End Sub

End Class


Saludos!
Título: Re:exportar datos a libros excel en vb.net Visual Basic Microsoft.Office.Interop.Ex
Publicado por: katsumoto en 27 de Abril 2016, 18:52
la hoja tiene una cabecera y una fila de totales lo que quiero es que por mas filas que tenga el datagrid no me pase por encima la de totales
ejemplo:
nombre      apellidos     dni      cuota
----------     ------------    -----    ---------
pepe          lopez          1111     20
juan           perez          2222    30
totales                                      50

si en lugar de dos filas paso 3 o mas dichas filas se cargan en las correspondientes a totales y lo que quiero es que la fila de totales o se desplace hacia abajo o llegado al numero de fila de totales añada una y escriba en ella, no se si me explico

pero de todas formas gracias por molestarte en contestarme se agradece mucho.
Título: Re:exportar datos a libros excel en vb.net Visual Basic Microsoft.Office.Interop.Ex
Publicado por: César Krall en 28 de Abril 2016, 08:28
Hola lo que yo entiendo es que después de añadir la información debes recalcular la fila con los totales, si no recalculas ya no reflejará el total. En totales puedes tener o bien una fórmula o bien un número directamente, pero en cualquier caso si es una fórmula tendrás que poner el nuevo rango de celdas y si es un número tendrás que hacer el cálculo para obtenerlo después de la actualización.

Si esto es correcto la idea sobre los pasos que habría que dar sería:

1) Insertar la información actualizada en el fichero excel de modo que

1.1) Si la información contiene más filas de las existentes, se inserta la información (eliminando la fila de totales). Luego habría que calcular el total, e insertar la fila de totales actualizada.

1.2) Si la información contiene menos filas de las existentes, se inserta la información, se borran las filas sobrantes. Luego habría que calcular el total, e insertar la fila de totales actualizada.

Saludos!