La cosa es que quieren una pequeña aplicacion de escritotio en la que ellos seleccionen el Excel y directamente les genere el resto.
He llegado hasta aquí, soy capaz de abrir el Excel, guardar los datos en un DataSet, pero a la hora de intentar mostrarlos en un GridView no hay manera.
Les dejo el codigo.
Código:
Private Sub crgExcel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles crgExcel.Click
Dim xls_cn As New OleDbConnection
Dim xls_cmd As New OleDbCommand
Dim xls_reader As New OleDbDataAdapter
'Dim mysql_conn As New MySqlConnection
'Dim mysql_comando As New MySqlCommand
'Dim xls_sql, mysql_connstring, insert As String
Dim xlsx As String
xlsx = "S:\Q_Calidad\Trazabilidad Reel RI01099390 (3).xlsx"
Dim strExtension As String = ""
Dim nombreXls As String
Dim m_Excel As Microsoft.Office.Interop.Excel.Application
nombreXls = Path.GetFileName(xlsx)
'obtener la extension del archivo
strExtension = Path.GetExtension(xlsx)
If strExtension = ".xls" Or strExtension = ".xlsx" Then
' MsgBox("es un archivo excel")
If (File.Exists(xlsx)) Then
xls_cn = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + xlsx + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=0'")
'xls_cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + xlsx + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=0'"
'xls_cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.12.0;Data Source=" + xlsx + ";Extended Properties='Excel 12.0;HDR=YES'"
m_Excel = CreateObject("Excel.Application")
m_Excel.Workbooks.Open(xlsx)
Dim ds As New DataSet("Datos")
Using xls_cn
xls_cn.Open()
xls_cmd.CommandText = "SELECT * FROM [caf$]"
xls_cmd.Connection = xls_cn
xls_reader.SelectCommand = xls_cmd
'contar candidad de filas del excel
Dim total As Integer = m_Excel.Range("a1").CurrentRegion.Rows.Count
'Guardamos los datos en el DataSet
Dim da As New OleDbDataAdapter(xls_cmd)
da.Fill(ds)
If ds.Tables.Count = 0 Then 'Está vacío.
MessageBox.Show("Vacio")
Else
MessageBox.Show("LLEno")
End If
End Using
DataGridView1.AutoGenerateColumns = False
MessageBox.Show("LLEGA")
DataGridView1.DataSource = ds.Tables(0).DefaultView
MessageBox.Show("AQUI")
End If
Else
MsgBox("Introduzca un archivo .xls o .xlsx .")
Exit Sub
End If
End Sub
Muchas gracias