VB.net を使用して、Excel スプレッドシートからデータをインポートしようとしています。
私の手順は次のとおりです。
まず、ユーザーがファイルをサーバーにアップロードします
次に、サーバーからファイルを読み取り、グリッドビューにデータを入力したい
これは私が持っているものです:
Protected Sub btnUpload_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnUpload.Click
Dim filepath As String = ""
If FileUpload1.HasFile Then
Try
If (FileUpload1.PostedFile.ContentType = "application/vnd.ms-excel") Then
Dim filename As String = Path.GetFileName(FileUpload1.FileName)
'Session("userid") & "-" & Date.Now()
filepath = "\excel\" & Session("userid") & "_" & Now.Date().ToString("Mdy") & "_" & filename
FileUpload1.SaveAs(Server.MapPath("~/") & filepath)
ReadExcel(filepath)
Else
StatusLabel.Text = "Only Excel file types are accepted"
End If
Catch ex As Exception
StatusLabel.Text = "Upload status: The file could not be uploaded. The following error occured: " + ex.Message
End Try
End If
End Sub
Sub ReadExcel(ByVal filepath As String)
Dim MyConnection As System.Data.OleDb.OleDbConnection
Dim DtSet As System.Data.DataSet
Dim MyCommand As System.Data.OleDb.OleDbDataAdapter
MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & filepath & "';Extended Properties=Excel 8.0;")
MyCommand = New System.Data.OleDb.OleDbDataAdapter("select * from [NSTS]", MyConnection)
MyCommand.TableMappings.Add("Table", "Net-informations.com")
DtSet = New System.Data.DataSet
MyCommand.Fill(DtSet)
gwResults.DataSource = DtSet.Tables(0)
MyConnection.Close()
End Sub
「MyConnection」でエラーが発生し、サーバーではなく「C:/」を検索しようとしました:
「c:\excel\3_41911_Sample.xls」は有効なパスではありません。パス名のつづりが正しいこと、およびファイルが存在するサーバーに接続していることを確認してください。
代わりにサーバーからソース ファイルを取得するように OleDb 接続を設定するにはどうすればよいですか?
ありがとう!
気にしないで、私はそれを手に入れました
私は追加しました: Server.MapPath("~/") & filepath そして今それは動作します。しかし、今はエラーが発生しています: Microsoft Jet データベース エンジンはオブジェクト 'NSTS' を見つけられませんでした。オブジェクトが存在すること、およびその名前とパス名のつづりが正しいことを確認してください。
NSTS は、私の最初のスプレッドシートの名前です。私は何を間違っていますか?:(
私はスタッドのドル記号が欠けていました:)ああ、それは今すべて動作します!
"select * from [NSTS$]"
ありがとう!