1

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$]"

ありがとう!

4

3 に答える 3

2

クエリでシートの名前にa を使用$します。

"select * from [NSTS$]"
于 2011-04-19T16:06:51.350 に答える
1

c:\ excel \パスはローカルパスではありませんが、アプリケーションを実行している場所に対してローカルなパスです。

このアプリケーションをローカルマシンから実行している場合、c:\ excel \パスをマップするには、サーバードライブをウィンドウにマップしてそのドライブ名を使用するか、パス値として\\excelを使用する必要があります。

于 2011-04-19T16:04:23.953 に答える
1

まず、ファイルが保存されているサーバー パス上の正確な場所を知っていますか? パスをハードコーディングすることから始めて、他に何も起こっていないことを確認します。

ここにファイルを保存しているコードを見ると...

FileUpload1.SaveAs(Server.MapPath("~/") & ファイルパス)

それで...まず、そこに保存されていますか?もしそうなら、この呼び出しでファイルを読んでいる場所を見てください...

                ReadExcel(filepath)

やってみました -

ReadExcel(Server.MapPath("~/") & ファイルパス)?

于 2011-04-19T16:05:39.630 に答える