用以下语句读取EXCEL表格,却丢失部分行的数据。。。。。
系统windows-xp专业版,office-2003版本
Dim OpenFileDialog As New OpenFileDialog
OpenFileDialog.InitialDirectory = My.Application.Info.DirectoryPath()
OpenFileDialog.Filter = "EXCEL文件(*.xls)|*.xls"
If (OpenFileDialog.ShowDialog(Me) = System.Windows.Forms.DialogResult.OK) Then
Dim FileName As String = OpenFileDialog.FileName
Dim xbwmsg As String
xbwmsg = MsgBox("文件:'" & FileName & "'你是否确定导入!?", 1)
If xbwmsg <> vbOK Then Exit Sub
Dim MstrConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & FileName & "';Extended Properties=Excel 8.0;"
Dim myDataset As New DataSet
Dim da As New OleDbDataAdapter("select * from [$偏差报告]", MstrConn)
Me.Cursor = Cursors.WaitCursor
PictureBox1.Visible = True
Label21.Visible = True
Label21.Text = "数据读取,请稍候……10%"
Me.Enabled = False
Try
da.Fill(myDataset)
DataGrid1.DataSource = myDataset.Tables.Item(0).DefaultView
Catch ex As Exception
MsgBox(ex.Message.ToString)
Exit Sub
End Try
Label21.Text = "数据读取,请稍候……100%"
问题补充: 问题已自己解答。。。。。内容见自己的评论↓ 关键是打开EXCEL表格的两个参数没有写HDR=YES; IMEX=1。。。。不知道为什么,以前都没有要参数也没有丢失数据。。。汗。大家以此为戒~~~
9个月前 XBW : 这代码是我调试的单取数据代码,直接保存到数据库也没有看见丢失数据,应该的没有取到数据。。。 |
9个月前 XBW : 即使全部空格都赋值,红框里面的数据也只有一行被采集,其他行照样没有。搜索网页得知,数据库读取excel有出现空值现象,不知道有什么证实比较好的代 码可以保证100%采集?而且每次采集的数据都比较庞大,全部赋值比较麻烦,也不可取。。。 |
9个月前 XBW : 问题终于又自己在网上参考,并且试用得到解决。。。。关键在代码中Dim MstrConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & FileName & "';Extended Properties=Excel 8.0"没有加参数,正确代码如下:Dim MstrConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & FileName & "';Extended Properties=‘Excel 8.0;HDR=YES; IMEX=1’"。使用后没有数据丢失现象。^o^ |