2011-04-19 113 views
1

我试图从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:\ EXCEL \ 3_41911_Sample.xls”,而不是在服务器上是不是一个有效的路径。确保路径名拼写正确,并且您已连接到文件所在的服务器。

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

谢谢!


没关系,我得到了它

我说:使用Server.Mappath( “〜/”)&文件路径和现在的作品。但是,现在我收到错误: Microsoft Jet数据库引擎找不到对象'NSTS'。确保对象存在,并且正确拼写其名称和路径名。

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


我错过了一个studip美元符号:)啊,现在所有的作品!

"select * from [NSTS$]" 

谢谢!

回答

2

使用在查询您的工作表的名称$

"select * from [NSTS$]" 
+0

烨,多数民众赞成:)只要得到它的工作:)谢谢:) – 2011-04-19 16:07:31

1

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

如果从本地机器运行此应用程序,为了映射c:\ excel \ path,您应该将服务器驱动器映射到您的Windows并使用该驱动器名称或使用\\ excel作为路径值。

1

首先 - 你确切地知道文件被保存到服务器路径的哪个位置?我首先要对路径进行硬编码,以确保没有任何其他事情正在发生。

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

FileUpload1.SaveAs(使用Server.Mappath( “〜/”)&文件路径)

所以...首先,你确定它在那里保存?如果是这样,那么看看你正在读这个电话文件的地方...

   ReadExcel(filepath) 

你试过 -

READEXCEL(使用Server.Mappath( “〜/”)&文件路径)?