从Excel - VB.NET导入数据



我正在尝试从excel电子表格导入一些数据,使用VB.net

我的步骤是:

首先用户将文件上传到服务器

然后我想从服务器读取文件然后填充gridview

这是我所拥有的:

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:excel3_41911_Sample.xls'不是有效路径。确保路径名拼写正确,并且您已连接到文件所在的服务器。

我如何设置OleDb连接来从服务器获取源文件?

谢谢!


没关系,我知道了

添加:Server.MapPath("~/") &Filepath,现在它工作了。然而,现在我得到的错误: Microsoft Jet数据库引擎找不到对象'NSTS'。确保对象存在,并且正确拼写它的名称和路径名。

NSTS是我第一个电子表格的名称。我做错了什么?(


我少了一个研究美元符号:)啊,它现在都工作了!

"select * from [NSTS$]"

谢谢!

在查询中使用表名中的$:

"select * from [NSTS$]"

您的c:excel path不是本地路径,但它是您运行应用程序的本地路径。

如果你在本地机器上运行这个应用程序,为了映射c:excel path,你应该映射服务器驱动器到你的windows并使用该驱动器名称或使用\excel作为路径值。

首先-您是否确切地知道文件被保存到服务器路径的哪个位置?我将从硬编码路径开始,以确保没有其他奇怪的事情发生。

看看你的代码,你把文件保存在这里…

FileUpload1.SaveAs (Server.MapPath("~/"),filepath)

所以…首先,你确定它在保存吗?如果是这样,那么看看你在哪里用这个调用读取文件…

                ReadExcel(filepath)

你试过了吗-

ReadExcel (Server.MapPath("~/"),filepath) ?

相关内容

  • 没有找到相关文章

最新更新