2011-04-19 149 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( 「〜/」)&文件路徑)?