我正在努力将Excel数据上传到数据网格视图。 excel包含有关特定项目的资产映射(资产ID,EmpID1,EmpID2,Project#等)的数据(某些资产可能被标记为超过1个关联,因此我有2个EmpId字段和放大器;第二个可能有空值)。在这里,我只是想查询(选择* ..)excel&把它放在一个数据表中(我需要后者使用)&最后在datagrid视图中显示它。虽然数据输出很好,但我观察到vb.net中的一种特殊行为
1)如果前10行中没有数据,则EmpID2列不显示任何数据(完全空白)。即,如果此列的前10行为空,则数据网格视图中整个列为空。
2)如果前10行中至少有一行有值(即使我手动添加一个垃圾数字),那么我可以看到其余行的数据是否正确更新。
代码段:
Dim query_Assetsmapping As String = "select * from [sheet1$]"
Dim MyConnection = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0; Data Source=Asset_Mapping.xls; Extended Properties=Excel 8.0")
Dim MyCommand = New System.Data.OleDb.OleDbDataAdapter(query_Assetsmapping, MyConnection)
Dim DtSet = New System.Data.DataTable
MyCommand.Fill(DtSet)
MyConnection.Close()
DataGridView1.DataSource = DtSet.tables(0)
我没有看到任何数据类型问题,因为我只是将数据从excel导出到数据表而没有指定或转换数据类型。
如果需要为datagrid视图属性显式指定任何内容,请帮助我理解,这样我就可以在数据网格中显示整个数据。
注意:EmpId字段是一个6位数字。
答案 0 :(得分:1)
只需更改连接字符串
即可Dim MyConnection = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0; Data Source=Asset_Mapping.xls;Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'")