ユーザーがExcelファイルを選択できるWebページを構築しようとしています。ページはページのコンテンツを読み取り、検証後にデータをDBにアップロードします。
実行用のボタンとデータを表示するためのグリッドビューを備えた fileUpload asp コントロールがあります。これは最終目標ではありませんが、スクリプトがファイルを正常に読み取っているかどうかをテストするだけです (そうではありません)。
私が取得し続けるエラーは次のとおりです。
"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 について詳しく知る方法についての優れたリソースもありがたく思います。
ありがとう!