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.
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 vb.net a c# online.
Usa el mismo code, la diferencia a C# no es mucha