Visual Basic.NET - Excel a DataGridView

   
Vista:

Excel a DataGridView

Publicado por Nilton (1 intervención) el 10/06/2009 19:16:53
Tengo la sgte inquietud, necesito importar un archivo excel a un datagrid, cual es el codigo para poder hacer esto. Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Excel a DataGridView

Publicado por lincolnf (55 intervenciones) el 11/06/2009 21:57:34
bueno aqui tengo un ejemplo desarrollado, escribeme al correo y te mando el codigo fuente ok.
n se me antoja escribir el codigo fuente por que es mucho.... un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Excel a DataGridView

Publicado por lincolnf (55 intervenciones) el 11/06/2009 22:01:15
Imports System.Data.OleDb 'We're gonna import this class to manage OleDb
Imports System.Xml 'This class allow us to use XML Comments

''' <summary>
''' Main Class para cargar y visualizar el archivo Excel
''' </summary>
''' <remarks>Esta forma se encargará de cargar un archivo con extensión xls y desplegar el contenido
''' en un datagridview</remarks>
Public Class frmReadExcel
Dim sheetNo As String
Dim sheetName As String

''' <summary>
''' Evento Load de la forma principal
''' </summary>
''' <remarks>Se hacen ajustes de visibilidad de elementos</remarks>
Private Sub frmReadExcel_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.btnLoad.Focus()
Me.dgvExcel.Visible = False
Me.pbNick.Visible = True
Me.pbLogo.Visible = False
End Sub

''' <summary>
''' Evento Click del botón "Cargar Archivo"
''' </summary>
''' <remarks>Se encarga de abrir un cuadro de dialogo para buscar el archivo xls que deseamos visualizar</remarks>
Private Sub btnLoad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLoad.Click
OpenFileDialog.DefaultExt = "*.xls"
OpenFileDialog.Filter = "Excel | *.xls"
If OpenFileDialog.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub
txtLoad.Text = OpenFileDialog.FileName
Me.dgvExcel.Visible = False
Me.pbNick.Visible = True
Me.pbLogo.Visible = False
End Sub

''' <summary>
''' Evento Click del botón "Visualizar Excel"
''' </summary>
''' <remarks>Se presenta un inputbox solicitando que número de hoja se quiere visualizar en el grid
''' y posteriormente se manad llamar al procedimiento LoadExcel</remarks>
Private Sub btnVisualize_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVisualize.Click
sheetNo = InputBox("Escriba el NUMERO de hoja (Sheet) que desea visualizar en el DataGrid", "Carga de Datos al Grid", "1")
LoadExcel(dgvExcel, txtLoad.Text, "Sheet" + sheetNo)
End Sub

''' <summary>
''' Procedimiento para efectuar el despliegue de Excel al DataGridView
''' </summary>
''' <param name="dgvExcel">Nuestro DataGridView</param>
''' <param name="SBook">La ruta del archivo de excel</param>
''' <param name="sSheet">El nombre de la hoja a desplegar en el DGV</param>
''' <remarks>Este procedimiento recibe tres parametros con los cuales crea un DataAdapter
''' para llenar un DataSet y pasarlo al DGV para que se despliegue la información</remarks>
Sub LoadExcel(ByVal dgvExcel As DataGridView, ByVal SBook As String, ByVal sSheet As String)
Dim cs As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & SBook & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES"""
Try
Dim cn As New OleDbConnection(cs) 'Connection String

If Not System.IO.File.Exists(SBook) Then 'Si no encuentra un libro .xls
MsgBox("No se encontró el Libro: " & SBook, MsgBoxStyle.Critical, "Ruta inválida")
Exit Sub
End If

Dim DA As New OleDbDataAdapter("Select * From [" & sSheet & "$]", cs) 'sSheet es el nombre de la hoja
Dim DS As New DataSet

Try
DA.Fill(DS) 'Se intenta llenar con "Sheet(sheetNo)$"
Catch ex As Exception

Try
Dim DA1 As New OleDbDataAdapter("Select * From [" & "Hoja" & sheetNo & "$]", cs)
DA1.Fill(DS) 'Se intenta llenar con "Hoja(sheetNo)$"
Catch e As Exception
MessageBox.Show("No se detectaron en el libro de Excel hojas con el nombre 'Sheet" + sheetNo + "' ni 'Hoja" + sheetNo + "'," & _
"usualmente esto se debe a que cambió el nombre de la hoja que quiere visualizar o bien a que no exista. " & "Verifique el nombre " & _
"en su documento y escribalo a continuación para intentar visualizarlo nuevamente", "Error al visualizar el documento", MessageBoxButtons.OK, MessageBoxIcon.Information)

sheetName = InputBox("Introduzca el NOMBRE de la hoja que quiere visualizar en el grid.")
If sheetName = "" Then
Me.dgvExcel.Visible = False
Me.pbNick.Visible = True
Me.pbLogo.Visible = False
Exit Sub
End If

Dim DA2 As New OleDbDataAdapter("Select * From [" & sheetName & "$]", cs)
DA2.Fill(DS)
End Try

Me.dgvExcel.Visible = False
Me.pbNick.Visible = True
Me.pbLogo.Visible = False
End Try

'Cuando se ha encontrado al hoja a desplegar se pasa la información al DGV
dgvExcel.DataSource = DS.Tables(0)

' DefaultCellStyle: formato currency ($) para los encabezados
'.Columns(1).DefaultCellStyle.Format = "c"
'.Columns(2).DefaultCellStyle.Format = "c"

Me.dgvExcel.Visible = True
Me.pbNick.Visible = False
Me.pbLogo.Visible = True
Catch ex As Exception
MessageBox.Show("No se encontró la hoja " & sheetName & " en el libro de excel, por favor verifique los datos", "Error al visualizar el documento", MessageBoxButtons.OK, MessageBoxIcon.Information)
Me.dgvExcel.Visible = False
Me.pbNick.Visible = True
Me.pbLogo.Visible = False
End Try
End Sub

''' <summary>
''' Evento Click del Botón "Salir"
''' </summary>
''' <remarks>Se encarga de mandar llamar al evento FormClosing de la forma</remarks>
Private Sub BtnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClose.Click
Me.Close()
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Excel a DataGridView

Publicado por francisco (1 intervención) el 24/08/2009 23:47:55
me da varios errores, uno el de la clase que debe de cerrar con un "end class" , me puedes explicar porfabor
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar