【问题标题】:Using OleDB to get Excel Sheet Data, but it's "randomly" not reading cell data of a row使用 OleDB 获取 Excel 工作表数据,但它“随机”不读取一行的单元格数据
【发布时间】:2015-02-06 16:47:53
【问题描述】:

我目前正在尝试从数千个 Excel 文件中提取某些数据。但是这个问题把我逼疯了,我在时间紧迫的情况下要在很短的截止日期前完成所有这些工作。

问题在于它似乎没有检索所有数据,尤其是我所说的这些“选项”列。对于这个特定的工作表,它应该一直有 -01 到 -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文件,用谁知道什么版本等制作的。我不知所措。
  • 对我来说看起来是正确的。注意:原始 Excel 工作表的第 26 行高度为零......但它就在那里。
  • 我添加了一个下载链接:filedropper.com/123456_1 以防万一这是某种奇怪的 excel 版本问题,你们也可以加载它,看看它是否适合你。跨度>

标签: .net vb.net excel oledb


【解决方案1】:

我终于弄明白了,但我不确定它为什么重要。

在尝试使用我的程序加载文件之前,我必须将单元格格式化为 Excel 中的文本并保存它。我猜有些单元格没有格式化为文本,所以它不会打扰阅读它。

我什至在没有 IMEX=1 的情况下进行了测试,结果发生了同样的事情。


如果有办法以快速的方式自动完成,那就太好了。 例如:打开文件,格式化所有工作表文本,然后从中读取。

我也想通了……

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-16
    • 2015-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多