Underc0de

Programación General => C# - VB.NET => Mensaje iniciado por: RandomSoft en Febrero 05, 2013, 02:21:48 PM

Título: Exportar Excel a PDF
Publicado por: RandomSoft en Febrero 05, 2013, 02:21:48 PM
Expero que esta pequeña ayudita les pueda ser de mucha utilidad para la realización de Sistemas u otros proyectos que realizen.

Saludos.

Código (vbnet) [Seleccionar]

Imports Microsoft.Office.Interop
Imports Microsoft.Office.Interop.Excel

    Dim Obj_Excel As Excel.Application
    Dim Obj_Libro As Object
    Dim Obj_Hoja As Object
    Dim iCol As Long

    Dim excelWorkbook As Workbook = Nothing

    Dim paramExportFormat As XlFixedFormatType = _
        XlFixedFormatType.xlTypePDF
    Dim paramExportQuality As XlFixedFormatQuality = _
        XlFixedFormatQuality.xlQualityStandard
    Dim paramOpenAfterPublish As Boolean = False
    Dim paramIncludeDocProps As Boolean = True
    Dim paramIgnorePrintAreas As Boolean = True
    Dim paramFromPage As Object = Type.Missing
    Dim paramToPage As Object = Type.Missing

Public Function Exportar(ByVal Dirtd As String, ByVal Dirts As String)
        On Error GoTo Error_Handler

        Dim i As Integer
        Dim j As Integer

       'Colocar el cursor de espera mientras se exportan los datos
        Sistema.Cursor = Cursors.WaitCursor

        With Export.DataGridView1
            If .Rows.Count = 0 Then
                MsgBox("No hay datos para exportar a excel. Se ha indicado 0 en el parámetro Filas ")
            Else
                ' -- Crear nueva instancia de Excel   
                Obj_Excel = CreateObject("Excel.Application")
                ' -- Agregar nuevo libro
                Obj_Libro = Obj_Excel.Workbooks.Open(Filename:=Dirtd)

                excelWorkbook = Obj_Libro
                ' -- Referencia a la Hoja activa ( la que añade por defecto Excel )   
                Obj_Hoja = Obj_Excel.ActiveSheet

                iCol = 0
                ' --  Recorrer el Datagrid ( Las columnas )   
                For i = 0 To .Columns.Count - 1
                    ' -- Incrementar índice de columna   
                    iCol = iCol + 1
                    ' -- Obtener el caption de la columna   
                    Obj_Hoja.Cells(5, iCol) = .Columns(i).HeaderText
                    ' -- Recorrer las filas   
                    For j = 0 To .Rows.Count - 1
                        ' -- Asignar el valor a la celda del Excel
                        Obj_Hoja.Cells(j + 6, iCol) = .Rows(j).Cells(i).Value()
                    Next
                Next

                ' -- Hacer excel visible   
                Obj_Excel.Visible = False

                ' -- Opcional : colocar en negrita los enbezados en la hoja   
                With Obj_Hoja
                    .Rows(5).Font.Bold = True
                    ' -- Autoajustar las cabeceras   
                    .Columns("A:Z").AutoFit()
                End With

                'Convertir excel a pdf
                If Not excelWorkbook Is Nothing Then
                    excelWorkbook.ExportAsFixedFormat(paramExportFormat, Dirts, paramExportQuality, paramIncludeDocProps, paramIgnorePrintAreas, paramFromPage, paramToPage, paramOpenAfterPublish)
                End If

                With Obj_Excel
                    'Cierra el documento abierto ( True es para guardar los cambios )
                    .ActiveWorkbook.Close(SaveChanges:=False)
                    'Destruye las variables de objeto y cierra la aplicación de word   
                    .Quit()
                End With
            End If
        End With

        ' -- Eliminar las variables de objeto excel
        Obj_Hoja = Nothing
        Obj_Libro = Nothing
        Obj_Excel = Nothing

        Sistema.Cursor = Cursors.Default

        Return Obj_Hoja
        Exit Function

Error_Handler:

        MsgBox(Err.Description, vbCritical, "Sistema de Kardex")
        On Error Resume Next

        Obj_Hoja = Nothing
        Obj_Libro = Nothing
        Obj_Excel = Nothing
        Sistema.Cursor = Cursors.Default
    End Function
Título: Re:Exportar Excel a PDF
Publicado por: ANTRAX en Febrero 05, 2013, 02:23:18 PM
Buenisimo bro! Pero esto es VB.NET o C#?

Saludos!
Título: Re:Exportar Excel a PDF
Publicado por: RandomSoft en Febrero 05, 2013, 02:32:09 PM
Esta en VB.NET brother 8) creo que la falta de corchetes { }, punto y goma ; lo delata no? :)  :D:D
Título: Re:Exportar Excel a PDF
Publicado por: ANTRAX en Febrero 05, 2013, 02:34:06 PM
No conozco mucho a ese lenguaje, pero gracias por el dato! lo tendre en cuenta!
Andaba buscando algo similar pero en C#, pero no precisamente desde excel, sino desde el mismo formulario del programa.
Por ejemplo, si hay un Grid, pasar ese grid a PDF
Título: Re:Exportar Excel a PDF
Publicado por: RandomSoft en Febrero 05, 2013, 02:49:17 PM
xD bueno amigo, en esta parte del code especifica un formulario de nombre Export y el DataGridView1, el cual indica que si el DataGridView1 esta vacio no exportara nada y te mostrará un mensaje, caso contrario el contenido del DataGridView1 se exportará primero a un Excel el cual luego será guardado como PDF.

Citar
With Export.DataGridView1
            If .Rows.Count = 0 Then
                MsgBox("No hay datos para exportar a excel. Se ha indicado 0 en el parámetro Filas ")
            Else
                ' -- Crear nueva instancia de Excel 
                Obj_Excel = CreateObject("Excel.Application")
                ' -- Agregar nuevo libro
                Obj_Libro = Obj_Excel.Workbooks.Open(Filename:=Dirtd)

                excelWorkbook = Obj_Libro
                ' -- Referencia a la Hoja activa ( la que añade por defecto Excel ) 
                Obj_Hoja = Obj_Excel.ActiveSheet

                iCol = 0
                ' --  Recorrer el Datagrid ( Las columnas ) 
                For i = 0 To .Columns.Count - 1
                    ' -- Incrementar índice de columna 
                    iCol = iCol + 1
                    ' -- Obtener el caption de la columna 
                    Obj_Hoja.Cells(5, iCol) = .Columns(i).HeaderText
                    ' -- Recorrer las filas 
                    For j = 0 To .Rows.Count - 1
                        ' -- Asignar el valor a la celda del Excel
                        Obj_Hoja.Cells(j + 6, iCol) = .Rows(j).Cells(i).Value()
                    Next
                Next
End With
Título: Re:Exportar Excel a PDF
Publicado por: @NetFcruz en Marzo 12, 2013, 05:07:04 PM
Hay un converter de vb.net a c# online.
Muy buen aporte.
Saludos.
Título: Re:Exportar Excel a PDF
Publicado por: RandomSoft en Marzo 12, 2013, 05:40:22 PM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Hay un converter de vb.net a c# online.

Usa el mismo code, la diferencia a C# no es mucha