Monday, May 27, 2013

Show Excel Sheet to Grideview with VB.net


Imports System.Data
Imports System.Data.OleDb
Imports System.Collections.Generic
'Imports System.ComponentModel
'Imports System.Drawing
'Imports System.Linq
'Imports System.Text
'Imports System.Windows.Forms
'Imports System.Data.Common

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        ControlOdl.FileName = ""
        ControlOdl.Filter = "Microsoft Excel 2003(*.xls)|*.xlsx|Microsoft Excel 2010(*.xlsx)|*.xlsx"
        ControlOdl.FilterIndex = "2"

        If ControlOdl.ShowDialog = Windows.Forms.DialogResult.OK Then
            txtLocat.Text = ControlOdl.FileName

        End If
        'Dim ConStr As String = "Provider=Microsoft.ACE.OLEDB.12.0;data source=" & txtLocat.Text & ""
        cboExcelSheet.DataSource = GetSheetNames(txtLocat.Text)
    End Sub
    Public Shared Function GetSheetNames(ByVal path As String) As List(Of String)
        Dim sheets As New List(Of String)()
        Dim connectionString As String = [String].Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 8.0;HDR=YES;IMEX=1;""", path)
        Dim factory As DbProviderFactory = DbProviderFactories.GetFactory("System.Data.OleDb")
        Dim connection As DbConnection = factory.CreateConnection()
        connection.ConnectionString = connectionString
        connection.Open()
        Dim tbl As DataTable = connection.GetSchema("Tables")
        connection.Close()
        For Each row As DataRow In tbl.Rows
            Dim sheetName As String = DirectCast(row("TABLE_NAME"), String)
            If sheetName.EndsWith("$") Then
                sheetName = sheetName.Substring(0, sheetName.Length - 1)
            End If
            sheets.Add(sheetName)
        Next
        Return sheets
    End Function


    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        If System.IO.File.Exists(txtLocat.Text) Then
            Dim connectionString As String = [String].Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 8.0;HDR=YES;IMEX=1;""", txtLocat.Text)
            Dim query As String = [String].Format("select * from [{0}$]", cboExcelSheet.SelectedItem)
            Dim dataAdapter As New OleDbDataAdapter(query, connectionString)
            Dim dataSet As New DataSet()
            dataAdapter.Fill(dataSet)
            DataGridView1.DataSource = dataSet.Tables(0)
        Else
            MessageBox.Show("No File is Selected")
        End If
    End Sub
End Class


No comments:

Post a Comment