none
Generar nuevo archivo de excel y darle formato desde vb.net RRS feed

  • Pregunta

  • Hola a todos agradezco su atención me he atorado en un pequeño problema que quizá es algo básico pero aun estoy aprendiendo el lenguaje, necesito generar un archivo de excel nuevo desde vb.net y darle un formato, he intentado con este código que uitilice para  abrir un archivo existente y editarlo, como puedo sustituir ExcelFile que es donde se guarda la ubicación del archivo para que en vez de abrir un archivo existente pueda abrir uno nuevo y poder editarlo?

    Muchas gracias espero sus respuestas.

    Saludos

    Dim fila As Integer = 1
            Dim columna As Integer = 1
            'Dim ultimafila As String
    
    
            Dim Archivo As String
            Dim a As Object
            Dim AVerif As Object
            a = CreateObject("Excel.Application")
            a.Visible = True
            Archivo = ExcelFile
     
            AVerif = a.Workbooks.Open(Archivo)
    
    
            AVerif.WorkSheets("hoja1").Cells(fila, columna) = "Cargado"



    • Editado Vilag lunes, 11 de abril de 2016 19:45
    lunes, 11 de abril de 2016 19:44

Respuestas

  • Hola... Fijate este ejemplo ...tambien puedes abrir excel --> Menu --> Macros --> Grabar Macros  luego modificas el documentos   te vas a la grabacion de los macros revisas y las instrucciones son muy parecidas

       Public Function ExportarInformacionExcel() As String
            Dim nFila As Integer = Me.dt.Rows.Count()
            If (nFila = 0) Then : Return "NO EXISTE INFORMACION PARA EXPORTAR" : Exit Function : End If
            Dim f As Integer = 1 : Dim t As Integer = 1 : Dim n As Integer = 1
            Dim nc As Integer = nombreColumna.Items.Count + 3
            Excel = CreateObject("Excel.Application")
            Book = Excel.Workbooks.Add
            Sheet = Book.Worksheets(1)
            Try
                '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
                'INSERTAR IMAGEN EN EXCEL
                Sheet.Range(LetraColumna(1) & f).Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.White) 'color celda
                Sheet.Range(LetraColumna(1) & f, LetraColumna(nc) & f).Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.White)
                Dim Celda As Object = Sheet.Cells(2, 2)
                Dim Izquierda As Single
                Dim Arriba As Single
                Dim Ancho As Double = Celda.Offset(0, 1).Left - Celda.Left
                Izquierda = Celda.Left + Ancho / 2 - 50 / 2
                If Izquierda < 1 Then Izquierda = 1
                Dim Alto As Double = Celda.Offset(1, 0).Top - Celda.Top
                Arriba = Celda.Top + Alto / 2 - 40 / 2
                If Arriba < 1 Then Arriba = 1
                Sheet.Shapes.AddPicture("C:\Dynamics_Reportes\Compras\LogBlack.bmp", False, True, Izquierda, Arriba, 50, 40)
                '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
                f = f + 2
                Sheet.Range(LetraColumna(2) & f, LetraColumna(nc) & f).Merge(True)
                f = f + 1
                Sheet.Rows.Item(f).Font.Bold = 1
                Sheet.Rows.Item(f).Font.Size = 14
                Sheet.Range(LetraColumna(2) & f).Value = Me.empresa
                Sheet.Range(LetraColumna(2) & f, LetraColumna(nc) & f).Merge(True) 'Combina celdas
                f = f + 1
                Sheet.Rows.Item(f).Font.Bold = 1 ' Negritas
                Sheet.Rows.Item(f).Font.Size = 14 'Tamaño de letra
                Sheet.Range(LetraColumna(2) & f).Value = Me.rif
                Sheet.Range(LetraColumna(2) & f, LetraColumna(nc) & f).Merge(True)
                f = f + 1
                Sheet.Range(LetraColumna(2) & f, LetraColumna(nc) & f).Merge(True)
                f = f + 1
                Sheet.Rows.Item(f).Font.Bold = 1
                Sheet.Rows.Item(f).Font.Size = 14
                Sheet.Range(LetraColumna(2) & f).Value = Me.titulo
                Sheet.Range(LetraColumna(2) & f, LetraColumna(nc) & f).Merge(True)
                f = f + 1
                If periodo <> Nothing Then : Sheet.Range(LetraColumna(2) & f).Value = "PERIODO :  " & Me.periodo : End If
                Sheet.Range(LetraColumna(2) & f, LetraColumna(nc) & f).Merge(True)
                f = f + 1
                Sheet.Range(LetraColumna(2) & f).Value = "USUARIO :  " & ValorD.Usuario
                Sheet.Range(LetraColumna(2) & f, LetraColumna(nc) & f).Merge(True)
                f = f + 1
                Sheet.Range(LetraColumna(2) & f).Value = "FECHA DE IMPRESION :  " & DateTime.Now.ToString("dd/MM/yyy")
                Sheet.Range(LetraColumna(2) & f, LetraColumna(nc) & f).Merge(True)
                f = f + 3
                Sheet.Rows.Item(f).Font.Bold = 1
                Sheet.Rows.Item(f).Font.Size = 13
                Dim indice As Integer = 1 : Dim letra As String = Nothing
                For Each textoColumna In Me.nombreColumna.Items ' Agrego nombres de columnas 
                    indice = indice + 1 : letra = LetraColumna(indice)
                    Sheet.Range(letra & f).HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlCenter
                    Sheet.Range(letra & f).Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Gainsboro)
                    Sheet.Range(letra & f).Value = textoColumna
                Next
                f = f + 1
                For Each row As DataRow In Me.dt.Rows ' Agrego Informacion desde el datatable 
                   Sheet.Range(LetraColumna(2) & f, LetraColumna(nc) & f).HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlLeft
                    For i = 0 To Me.columna.Items.Count - 1
                        Sheet.Range(LetraColumna(i + 2) & f).Value = row(columna.Items(i).ToString)
                    Next
                    f = f + 1
                Next
                Excel.ActiveWindow.Zoom = 75
                Excel.Columns.AutoFit()
                Excel.Rows.AutoFit()
                Excel.Visible = True
                Excel.UserControl = True
                Excel.ActiveWindow.DisplayGridlines = False
            Catch ex As Exception
                Return "ERROR : " & ex.ToString
            End Try
            Return "EXITO"
        End Function
    
    
        Public Function LetraColumna(ByVal n As Integer) As String
            Dim letra As String = Nothing
            If n = 1 Then
                letra = "A"
            ElseIf n = 2 Then
                letra = "B"
            ElseIf n = 3 Then
                letra = "C"
            ElseIf n = 4 Then
                letra = "D"
            ElseIf n = 5 Then
                letra = "E"
            ElseIf n = 6 Then
                letra = "F"
            ElseIf n = 7 Then
                letra = "G"
            ElseIf n = 8 Then
                letra = "H"
            ElseIf n = 9 Then
                letra = "I"
            ElseIf n = 10 Then
                letra = "J"
            ElseIf n = 11 Then
                letra = "K"
            ElseIf n = 12 Then
                letra = "L"
            ElseIf n = 13 Then
                letra = "M"
            ElseIf n = 14 Then
                letra = "N"
            ElseIf n = 15 Then
                letra = "O"
            ElseIf n = 16 Then
                letra = "P"
            ElseIf n = 17 Then
                letra = "Q"
            ElseIf n = 18 Then
                letra = "R"
            ElseIf n = 19 Then
                letra = "S"
            ElseIf n = 20 Then
                letra = "T"
            ElseIf n = 21 Then
                letra = "U"
            ElseIf n = 22 Then
                letra = "V"
            ElseIf n = 23 Then
                letra = "W"
            ElseIf n = 24 Then
                letra = "X"
            ElseIf n = 25 Then
                letra = "Y"
            ElseIf n = 26 Then
                letra = "Z"
            ElseIf n = 27 Then
                letra = "AA"
            ElseIf n = 28 Then
                letra = "AB"
            ElseIf n = 29 Then
                letra = "AC"
            ElseIf n = 30 Then
                letra = "AD"
            ElseIf n = 31 Then
                letra = "AE"
            ElseIf n = 32 Then
                letra = "AF"
            ElseIf n = 33 Then
                letra = "AG"
            ElseIf n = 34 Then
                letra = "AH"
            ElseIf n = 35 Then
                letra = "AI"
            ElseIf n = 36 Then
                letra = "AJ"
            ElseIf n = 37 Then
                letra = "AK"
            ElseIf n = 38 Then
                letra = "AL"
            ElseIf n = 39 Then
                letra = "AM"
            ElseIf n = 40 Then
                letra = "AN"
            ElseIf n = 41 Then
                letra = "AO"
            ElseIf n = 42 Then
                letra = "AP"
            ElseIf n = 43 Then
                letra = "AQ"
            ElseIf n = 44 Then
                letra = "AR"
            ElseIf n = 45 Then
                letra = "AS"
            ElseIf n = 46 Then
                letra = "AT"
            ElseIf n = 47 Then
                letra = "AU"
            ElseIf n = 48 Then
                letra = "AV"
            ElseIf n = 49 Then
                letra = "AW"
            ElseIf n = 50 Then
                letra = "AX"
            ElseIf n = 51 Then
                letra = "AY"
            ElseIf n = 52 Then
                letra = "AZ"
            End If
            Return letra
        End Function

    Saludos


    EFRAIN MEJIAS C VALENCIA - VENEZUELA


    lunes, 11 de abril de 2016 19:54

Todas las respuestas

  • Hola... Fijate este ejemplo ...tambien puedes abrir excel --> Menu --> Macros --> Grabar Macros  luego modificas el documentos   te vas a la grabacion de los macros revisas y las instrucciones son muy parecidas

       Public Function ExportarInformacionExcel() As String
            Dim nFila As Integer = Me.dt.Rows.Count()
            If (nFila = 0) Then : Return "NO EXISTE INFORMACION PARA EXPORTAR" : Exit Function : End If
            Dim f As Integer = 1 : Dim t As Integer = 1 : Dim n As Integer = 1
            Dim nc As Integer = nombreColumna.Items.Count + 3
            Excel = CreateObject("Excel.Application")
            Book = Excel.Workbooks.Add
            Sheet = Book.Worksheets(1)
            Try
                '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
                'INSERTAR IMAGEN EN EXCEL
                Sheet.Range(LetraColumna(1) & f).Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.White) 'color celda
                Sheet.Range(LetraColumna(1) & f, LetraColumna(nc) & f).Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.White)
                Dim Celda As Object = Sheet.Cells(2, 2)
                Dim Izquierda As Single
                Dim Arriba As Single
                Dim Ancho As Double = Celda.Offset(0, 1).Left - Celda.Left
                Izquierda = Celda.Left + Ancho / 2 - 50 / 2
                If Izquierda < 1 Then Izquierda = 1
                Dim Alto As Double = Celda.Offset(1, 0).Top - Celda.Top
                Arriba = Celda.Top + Alto / 2 - 40 / 2
                If Arriba < 1 Then Arriba = 1
                Sheet.Shapes.AddPicture("C:\Dynamics_Reportes\Compras\LogBlack.bmp", False, True, Izquierda, Arriba, 50, 40)
                '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
                f = f + 2
                Sheet.Range(LetraColumna(2) & f, LetraColumna(nc) & f).Merge(True)
                f = f + 1
                Sheet.Rows.Item(f).Font.Bold = 1
                Sheet.Rows.Item(f).Font.Size = 14
                Sheet.Range(LetraColumna(2) & f).Value = Me.empresa
                Sheet.Range(LetraColumna(2) & f, LetraColumna(nc) & f).Merge(True) 'Combina celdas
                f = f + 1
                Sheet.Rows.Item(f).Font.Bold = 1 ' Negritas
                Sheet.Rows.Item(f).Font.Size = 14 'Tamaño de letra
                Sheet.Range(LetraColumna(2) & f).Value = Me.rif
                Sheet.Range(LetraColumna(2) & f, LetraColumna(nc) & f).Merge(True)
                f = f + 1
                Sheet.Range(LetraColumna(2) & f, LetraColumna(nc) & f).Merge(True)
                f = f + 1
                Sheet.Rows.Item(f).Font.Bold = 1
                Sheet.Rows.Item(f).Font.Size = 14
                Sheet.Range(LetraColumna(2) & f).Value = Me.titulo
                Sheet.Range(LetraColumna(2) & f, LetraColumna(nc) & f).Merge(True)
                f = f + 1
                If periodo <> Nothing Then : Sheet.Range(LetraColumna(2) & f).Value = "PERIODO :  " & Me.periodo : End If
                Sheet.Range(LetraColumna(2) & f, LetraColumna(nc) & f).Merge(True)
                f = f + 1
                Sheet.Range(LetraColumna(2) & f).Value = "USUARIO :  " & ValorD.Usuario
                Sheet.Range(LetraColumna(2) & f, LetraColumna(nc) & f).Merge(True)
                f = f + 1
                Sheet.Range(LetraColumna(2) & f).Value = "FECHA DE IMPRESION :  " & DateTime.Now.ToString("dd/MM/yyy")
                Sheet.Range(LetraColumna(2) & f, LetraColumna(nc) & f).Merge(True)
                f = f + 3
                Sheet.Rows.Item(f).Font.Bold = 1
                Sheet.Rows.Item(f).Font.Size = 13
                Dim indice As Integer = 1 : Dim letra As String = Nothing
                For Each textoColumna In Me.nombreColumna.Items ' Agrego nombres de columnas 
                    indice = indice + 1 : letra = LetraColumna(indice)
                    Sheet.Range(letra & f).HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlCenter
                    Sheet.Range(letra & f).Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Gainsboro)
                    Sheet.Range(letra & f).Value = textoColumna
                Next
                f = f + 1
                For Each row As DataRow In Me.dt.Rows ' Agrego Informacion desde el datatable 
                   Sheet.Range(LetraColumna(2) & f, LetraColumna(nc) & f).HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlLeft
                    For i = 0 To Me.columna.Items.Count - 1
                        Sheet.Range(LetraColumna(i + 2) & f).Value = row(columna.Items(i).ToString)
                    Next
                    f = f + 1
                Next
                Excel.ActiveWindow.Zoom = 75
                Excel.Columns.AutoFit()
                Excel.Rows.AutoFit()
                Excel.Visible = True
                Excel.UserControl = True
                Excel.ActiveWindow.DisplayGridlines = False
            Catch ex As Exception
                Return "ERROR : " & ex.ToString
            End Try
            Return "EXITO"
        End Function
    
    
        Public Function LetraColumna(ByVal n As Integer) As String
            Dim letra As String = Nothing
            If n = 1 Then
                letra = "A"
            ElseIf n = 2 Then
                letra = "B"
            ElseIf n = 3 Then
                letra = "C"
            ElseIf n = 4 Then
                letra = "D"
            ElseIf n = 5 Then
                letra = "E"
            ElseIf n = 6 Then
                letra = "F"
            ElseIf n = 7 Then
                letra = "G"
            ElseIf n = 8 Then
                letra = "H"
            ElseIf n = 9 Then
                letra = "I"
            ElseIf n = 10 Then
                letra = "J"
            ElseIf n = 11 Then
                letra = "K"
            ElseIf n = 12 Then
                letra = "L"
            ElseIf n = 13 Then
                letra = "M"
            ElseIf n = 14 Then
                letra = "N"
            ElseIf n = 15 Then
                letra = "O"
            ElseIf n = 16 Then
                letra = "P"
            ElseIf n = 17 Then
                letra = "Q"
            ElseIf n = 18 Then
                letra = "R"
            ElseIf n = 19 Then
                letra = "S"
            ElseIf n = 20 Then
                letra = "T"
            ElseIf n = 21 Then
                letra = "U"
            ElseIf n = 22 Then
                letra = "V"
            ElseIf n = 23 Then
                letra = "W"
            ElseIf n = 24 Then
                letra = "X"
            ElseIf n = 25 Then
                letra = "Y"
            ElseIf n = 26 Then
                letra = "Z"
            ElseIf n = 27 Then
                letra = "AA"
            ElseIf n = 28 Then
                letra = "AB"
            ElseIf n = 29 Then
                letra = "AC"
            ElseIf n = 30 Then
                letra = "AD"
            ElseIf n = 31 Then
                letra = "AE"
            ElseIf n = 32 Then
                letra = "AF"
            ElseIf n = 33 Then
                letra = "AG"
            ElseIf n = 34 Then
                letra = "AH"
            ElseIf n = 35 Then
                letra = "AI"
            ElseIf n = 36 Then
                letra = "AJ"
            ElseIf n = 37 Then
                letra = "AK"
            ElseIf n = 38 Then
                letra = "AL"
            ElseIf n = 39 Then
                letra = "AM"
            ElseIf n = 40 Then
                letra = "AN"
            ElseIf n = 41 Then
                letra = "AO"
            ElseIf n = 42 Then
                letra = "AP"
            ElseIf n = 43 Then
                letra = "AQ"
            ElseIf n = 44 Then
                letra = "AR"
            ElseIf n = 45 Then
                letra = "AS"
            ElseIf n = 46 Then
                letra = "AT"
            ElseIf n = 47 Then
                letra = "AU"
            ElseIf n = 48 Then
                letra = "AV"
            ElseIf n = 49 Then
                letra = "AW"
            ElseIf n = 50 Then
                letra = "AX"
            ElseIf n = 51 Then
                letra = "AY"
            ElseIf n = 52 Then
                letra = "AZ"
            End If
            Return letra
        End Function

    Saludos


    EFRAIN MEJIAS C VALENCIA - VENEZUELA


    lunes, 11 de abril de 2016 19:54
  • Fijate de usar esto.

    http://www.codeproject.com/Articles/371203/Creating-basic-Excel-workbook-with-Open-XML


    Por favor recuerde &quot;Marcar como respuesta&quot; las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. Este contenido es proporcionado &quot;tal cual&quot; y no implica ninguna responsabilidad de parte de Microsoft.

    lunes, 11 de abril de 2016 19:59