【发布时间】:2012-04-13 08:57:58
【问题描述】:
我正在尝试读取一个名为 Book1.xls 的电子表格文件,其中包含一个名为 Sheet1 的工作表
但是我收到以下错误:
Microsoft Jet 数据库引擎找不到对象“Sheet1$”。 确保对象存在并且拼写它的名称和路径 正确命名。
这是我正在使用的代码的 sn-p:
Dim dt As DataTable = New DataTable()
Select Case fileExt
Case ".csv"
Dim reader As New CsvReader
dt = reader.GetDataTable(filePath)
Case ".xls", ".xlsx"
Dim oleDbConnStr As String
Select Case fileExt
Case ".xls"
oleDbConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & filePath & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=2"""
Case ".xlsx"
oleDbConnStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & filePath & ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=2"""
End Select
Using oleDbConn As OleDbConnection = New OleDbConnection(oleDbConnStr)
oleDbConn.Open()
Dim oleDbCmd As New OleDbCommand("SELECT * FROM [Sheet1$]", oleDbConn)
Dim oleDbDa As New OleDbDataAdapter(oleDbCmd)
oleDbDa.Fill(dt)
oleDbConn.Close()
End Using
End Select
我不明白为什么代码找不到我的工作表。为什么会这样,我该如何解决?
【问题讨论】:
-
使用绝对路径尝试一次:Data Source=C:\\myexcel.xls;
-
@AshwiniVerma
filepath是绝对路径,因为我使用的是Server.MapPath() -
访问此链接并尝试通过编程获取工作表名称:forums.asp.net/t/1751143.aspx/1
-
@Dante 是的,文件没有存储在正确的位置。 stackoverflow.com/a/10139665/370103 我预计这种情况会出现不同的错误消息!无论如何感谢您的帮助。