我正在尝试构建一个允许用户选择 excel 文件的网页,然后该页面将读取页面的内容并在验证后将数据上传到数据库。
我有一个 fileUpload asp 控件,带有一个用于执行的按钮和一个用于显示数据的 gridview。这不是最终目标,但我只是为了测试脚本是否成功读取文件(它不是)。
我不断收到的错误是:
"The Microsoft Office Access database engine could not find the object 'Sheet1'. Make sure the object exists and that you spell its name and the path name correctly."
我上传的excel文件肯定有一个Sheet1,所以我不确定发生了什么。
我不会假装对 OleDB 的工作原理有很多经验或了解,所以我确信这很简单。
我的代码如下:
Protected Sub Upload_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Upload.Click
If (testFile.HasFile) Then
Dim conn As OleDbConnection
Dim cmd As OleDbCommand
Dim da As OleDbDataAdapter
Dim ds As DataSet
Dim query As String
Dim connString As String = ""
Dim strFileType As String = System.IO.Path.GetExtension(testFile.FileName).ToString().ToLower()
'Check file type
If strFileType.Trim = ".xls" Or strFileType.Trim = ".xlsx" Then
Else
MsgBox("Only excel files allowed")
Exit Sub
End If
Try
'Connection String to Excel Workbook
If strFileType.Trim = ".xls" Then
connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & testFile.FileName & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=2"""
ElseIf strFileType.Trim = ".xlsx" Then
connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & testFile.FileName & ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=2"""
End If
query = "SELECT * FROM [Sheet1$]"
'Create the connection object
conn = New OleDbConnection(connString)
'Open connection
If conn.State = ConnectionState.Closed Then conn.Open()
'Create the command object
cmd = New OleDbCommand(query, conn)
da = New OleDbDataAdapter(cmd)
ds = New DataSet()
da.Fill(ds)
grvExcelData.DataSource = ds.Tables(0)
grvExcelData.DataBind()
da.Dispose()
conn.Close()
conn.Dispose()
Catch ex As Exception
MsgBox(ex.Message)
End Try
Else
MsgBox("Must have file")
Exit Sub
End If
End Sub
我也很感激一个很好的资源,了解如何更多地了解 OleDB 以及我的代码的具体错误!
谢谢!