excel - MyCommand.Fill(DtSet) 不起作用。为什么?
问题描述
我正在尝试使用 OleDb 填充数据集,但它似乎不起作用。我从一个网站获得了代码,对 Connection 知之甚少。我在 VB.NET (2010) 和 Excel 2016 中编程。代码的作用:它使用 OLEDB 在 Excel 文件中插入单元格数据。
我在 VB.NET (2010) 中编程,并稍微修改了代码以满足我的需要。
这是完整的代码:
Private Sub AdxRibbonButton16_OnClick(ByVal sender As System.Object, _
ByVal control As AddinExpress.MSO.IRibbonControl, _
ByVal pressed As System.Boolean) _
Handles AdxRibbonButton16.OnClick
Try
Dim MyConnection As System.Data.OleDb.OleDbConnection
Dim DtSet As System.Data.DataSet
Dim MyCommand As System.Data.OleDb.OleDbDataAdapter
Dim DataGridView1 As New DataGridView
MyConnection = New System.Data.OleDb.OleDbConnection _
("provider=Microsoft.ACE.OLEDB.12.0; Data Source='F:\testfile.xlsx'; Extended Properties=Excel 12.0;")
MyCommand = New System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", MyConnection)
MyCommand.TableMappings.Add("Table", "TestTable")
DtSet = New System.Data.DataSet
MyCommand.Fill(DtSet) '// seems problem is here
DataGridView1.DataSource = DtSet.Tables(0)
MyConnection.Close()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
预期结果:应将 Excel 文件的内容发送到 DataGrid。
实际结果:什么都没有发生
错误消息:没有错误消息。当我点击我的按钮时,什么也没有发生。
解决方案
在设计时添加 DataGridView1。我使用 DataTable 而不是 DataSet 和 Command 而不是 DataAdapter 稍微简化了一些事情。即使出现错误,Using 块也将确保关闭和处置数据库对象。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim dt As New DataTable
Using MyConnection As New OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0; Data Source='F:\testfile.xlsx'; Extended Properties=Excel 12.0;")
Using MyCommand As New OleDbCommand("select * from [Sheet1$]", MyConnection)
MyConnection.Open()
dt.Load(MyCommand.ExecuteReader)
End Using
End Using
DataGridView1.DataSource = dt
End Sub
推荐阅读
- regex - awk 正则表达式返回 nada?
- python - TfLite LSTM 模型
- javascript - Wordpress 无法上传图片
- css - 将 Pandas Styler 应用于 MultiIndex 列表
- java - 调用quickbooks api时API响应状态码400
- java - 将矩形添加到 JPanel
- r - R中的重复测量方差分析:必须使用有效的下标向量子集列
- android - 设置文本时,Android TextView 不会“wrap_content”
- arrays - C不打印二维动态数组内容
- python - 如何根据另一列中是否满足一组条件,向 Python 中的数据框添加新列?