Exportar Excel a PDF

Iniciado por RandomSoft, Febrero 05, 2013, 02:21:48 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Febrero 05, 2013, 02:21:48 PM Ultima modificación: Octubre 21, 2013, 11:16:29 PM por Expermicid
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

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
Hazlo todo tan simple como sea posible, pero no más simple. Albert Einstein

Buenisimo bro! Pero esto es You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login o C#?

Saludos!


Esta en You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login brother 8) creo que la falta de corchetes
Código: text
{ }
, punto y goma
Código: text
;
lo delata no? :)  :D:D
Hazlo todo tan simple como sea posible, pero no más simple. Albert Einstein

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


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
Hazlo todo tan simple como sea posible, pero no más simple. Albert Einstein

Hay un converter de You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login a c# online.
Muy buen aporte.
Saludos.
System32
XD
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Hay un converter de You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login a c# online.

Usa el mismo code, la diferencia a C# no es mucha
Hazlo todo tan simple como sea posible, pero no más simple. Albert Einstein