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