2012年5月21日 星期一

vbnet 讀取 dbf、Excel、Access

引用來源
--
  1. Imports System.Data.OleDb
  2. Public Class Form1Class Form1
  3. Dim dbfconn As OleDb.OleDbConnection = New OleDb.OleDbConnection
  4. Private Sub Button1_Click()Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  5. 'dbf文件操作
  6. 'http://www.connectionstrings.com/?carrier=dbffoxpro
  7. Dim path, FileName As String
  8. Me.OpenFileDialog1.Title = "选择dbf文件"
  9. Me.OpenFileDialog1.Filter = "dbf文件|*.dbf"
  10. If Me.OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
  11. path = System.IO.Path.GetDirectoryName(OpenFileDialog1.FileName)
  12. FileName = System.IO.Path.GetFileName(OpenFileDialog1.FileName)
  13.  
  14. FileName = Microsoft.VisualBasic.Left(FileName.ToUpper, FileName.Length - 4)
  15.  
  16.  
  17. Dim conn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & path & ";Extended Properties=dBASE IV;User ID=Admin;Password=;"
  18.  
  19. 'Dim conn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=e: mp;Extended Properties=dBASE IV;User ID=Admin;Password=;"
  20. Dim dbfconn As OleDb.OleDbConnection = New OleDb.OleDbConnection
  21. dbfconn.ConnectionString = conn
  22.  
  23. 'Dim cmd As String = "select * from w"
  24. Dim cmd As String = "select * from " & FileName
  25. Dim adapter As New OleDbDataAdapter(cmd, dbfconn)
  26. Dim topics As New DataSet
  27. adapter.Fill(topics)
  28. Me.DataGridView1.DataSource = topics.Tables(0)
  29. Me.DataGridView1.Refresh()
  30. End If
  31.  
  32.  
  33. End Sub
  34.  
  35. Private Sub open_excel_Click()Sub open_excel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles open_excel.Click
  36. Dim path, FileName, FileExname As String
  37. Dim conn As String
  38. Me.OpenFileDialog1.Title = "选择Excel文件"
  39. Me.OpenFileDialog1.Filter = "Excel 文件|*.xls*"
  40. If Me.OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
  41. path = System.IO.Path.GetFullPath(OpenFileDialog1.FileName)
  42. FileName = System.IO.Path.GetFileName(OpenFileDialog1.FileName)
  43. FileExname = System.IO.Path.GetExtension(OpenFileDialog1.FileName).ToUpper
  44. FileName = Microsoft.VisualBasic.Left(FileName.ToUpper, FileName.Length - 4)
  45.  
  46. If FileExname = "XLSX" Then
  47.  
  48. conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & path & ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1';"
  49. Else
  50. conn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & path & ";Extended Properties='Excel 12.0;HDR=YES';"
  51.  
  52. End If
  53.  
  54.  
  55. dbfconn.ConnectionString = conn
  56. '获取数据表列表
  57. Dim table_list As Data.DataTable = GetSchemaTable(dbfconn, "TABLE")
  58.  
  59. 'combbox列表控件中显示数据库中包含的数据表
  60. Me.cb_table_list.DataSource = table_list.DefaultView
  61. Me.cb_table_list.ValueMember = "TABLE_NAME"
  62. Me.cb_table_list.DisplayMember = "TABLE_NAME"
  63.  
  64. End If
  65. End Sub
  66.  
  67.  
  68. Private Function GetSchemaTable()Function GetSchemaTable(ByVal connection As Data.OleDb.OleDbConnection, ByVal Type As String)
  69. ' 获取数据表列表
  70. 'Type 有:"TABLE,VIEW,ACCESS TABLE,SYSTEM TABLE",
  71.  
  72. Type = Type.ToUpper
  73. connection.Open()
  74. Dim table_list As Data.DataTable
  75. table_list = connection.GetOleDbSchemaTable(Data.OleDb.OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, Type})
  76. connection.Close()
  77. Return table_list
  78. End Function
  79.  
  80. Private Sub table_list_SelectedIndexChanged()Sub table_list_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cb_table_list.SelectedIndexChanged
  81. ''获取数据表的内容
  82. 'MsgBox(Me.cb_table_list.SelectedValue)
  83. If Me.cb_table_list.SelectedValue.ToString <> "System.Data.DataRowView" Then
  84. Dim cmd As String = "select * from [" & Me.cb_table_list.SelectedValue.ToString & "]"
  85. Dim adapter As New OleDbDataAdapter(cmd, dbfconn)
  86. Dim topics As New DataSet
  87. adapter.Fill(topics)
  88. Me.DataGridView1.DataSource = topics.Tables(0)
  89. Me.DataGridView1.Refresh()
  90. End If
  91.  
  92. End Sub
  93.  
  94. Private Sub Open_Access_Click()Sub Open_Access_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Open_Access.Click
  95. Dim path, FileName, FileExname As String
  96. Dim conn As String
  97. Me.OpenFileDialog1.Title = "选择Access文件"
  98. Me.OpenFileDialog1.Filter = "Access 文件|*.mdb|Access 2007 文件|*.accdb"
  99. If Me.OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
  100. path = System.IO.Path.GetFullPath(OpenFileDialog1.FileName)
  101. FileName = System.IO.Path.GetFileName(OpenFileDialog1.FileName)
  102. FileExname = System.IO.Path.GetExtension(OpenFileDialog1.FileName).ToUpper
  103. FileName = Microsoft.VisualBasic.Left(FileName.ToUpper, FileName.Length - 4)
  104.  
  105. If FileExname = "MDB" Then
  106. 'access 97 -2003 连接字符串
  107. conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & path & ";Jet OLEDB:Database Password=;"
  108. Else
  109. 'access 2007 连接字符串
  110. conn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & path & ";Jet OLEDB:Database Password=MyDbPassword;"
  111.  
  112. End If
  113. dbfconn.ConnectionString = conn
  114. '获取数据表列表
  115. Dim table_list As Data.DataTable , = GetSchemaTable(dbfconn, "TABLE")
  116.  
  117. Me.cb_table_list.DataSource = table_list.DefaultView
  118. Me.cb_table_list.ValueMember = "TABLE_NAME"
  119. Me.cb_table_list.DisplayMember = "TABLE_NAME"
  120. End If
  121.  
  122.  
  123. End Sub
  124. End Class

沒有留言:

張貼留言