Expero que esta pequeña ayudita les pueda ser de mucha utilidad para la realización de Sistemas u otros proyectos que realizen.
Saludos.
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
Buenisimo bro! Pero esto es VB.NET o C#?
Saludos!
Esta en VB.NET brother 8) creo que la falta de corchetes { }
, punto y goma ;
lo delata no? :) :D:D
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
Hay un converter de vb.net a c# online.
Muy buen aporte.
Saludos.
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