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
El Lenguaje es la Ciudad para cuya Edificación cada Ser Humano ha Aportado una Piedra

Buenisimo bro! Pero esto es No tienes permitido ver los links. Registrarse o Entrar a mi cuenta o C#?

Saludos!


Esta en No tienes permitido ver los links. Registrarse o Entrar a mi cuenta brother 8) creo que la falta de corchetes
Código: php
{ }
, punto y goma
Código: php
;
lo delata no? :)  :D:D
El Lenguaje es la Ciudad para cuya Edificación cada Ser Humano ha Aportado una Piedra

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
El Lenguaje es la Ciudad para cuya Edificación cada Ser Humano ha Aportado una Piedra

Hay un converter de No tienes permitido ver los links. Registrarse o Entrar a mi cuenta a c# online.
Muy buen aporte.
Saludos.
System32
XD
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Hay un converter de No tienes permitido ver los links. Registrarse o Entrar a mi cuenta a c# online.

Usa el mismo code, la diferencia a C# no es mucha
El Lenguaje es la Ciudad para cuya Edificación cada Ser Humano ha Aportado una Piedra