使用OleDB获取Excel工作表数据,但它是“随机”不读一行的单元格数据

我目前正试图从成千上万的excel文件中提取某些数据。 但是这个问题让我感到非常疯狂,而且我正在紧张的工作中,在短时间内完成所有这些工作。

问题是,它似乎没有检索所有的数据,特别是这些“选项”列,我称之为。 它应该一直到-10这个特定的表。 这些是整张纸上唯一有时无法读取的值。它们有时会倾斜45度天使,但如果在读取文件之前手动更改其方向,似乎没有什么区别。

这是它在做什么: 缺少某些单元格的数据...

这是有问题的Excel文件(不知道这个链接是否可以工作):
https://drive.google.com/file/d/0B7-iwpcLS0GoaVpHYkxPTWdIYUE/view?usp=sharing

如果Google电子表格失败,则直接下载链接:
http://www.filedropper.com/123456_1

这是我正在使用的基本代码从我的应用程序中删除:

Dim xlAppIn As New Excel.Application Dim xlWorkbookIn As Excel.Workbook = xlAppIn.Workbooks.Open(sFilename) xlAppIn.Visible = False Dim oleDbConnStr As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & sFilename & ";Extended Properties='Excel 12.0; HDR=No; IMEX=1'" Dim oleDbConn As OleDbConnection = New OleDbConnection(oleDbConnStr) oleDbConn.Open() Dim sSheetName As String = xlWorkbookIn.Sheets(1).Name.ToString() txtStatus.Text = sSheetName 'Dim oleDbCmd As New OleDbCommand("SELECT * FROM [" & sSheetName & "$B5:AI46]", oleDbConn) Dim oleDbCmd As New OleDbCommand("SELECT * FROM [" & sSheetName & "$]", oleDbConn) Dim oleDbDa As New OleDbDataAdapter(oleDbCmd) Dim dt As New DataTable oleDbDa.Fill(dt) dgvRaw.DataSource = dt 

我在这里做错了什么?

我终于明白了,但我不知道为什么它很重要。

我不得不格式化单元格到Excel里的文本,并保存它之前试图加载与我的程序的文件。 我猜的一些单元格没有格式化为文本,所以它不会读取它。

我甚至testing没有IMEX = 1,同样的事情发生。


现在如果有一种方法可以快速实现自动化,那就好了。 例如:打开文件,格式化所有工作表文本,然后从中读取。

想象出来以及…

 'nSheetPos being iterator for looping through the sheets in the workbook xlWorkbookIn.Sheets(nSheetPos).Columns.NumberFormat = "@" xlWorkbookIn.Save()