2010-08-13 28 views
0

我真的很困惑如何去做這件事。 - 我希望能夠使用fileupload控件從我的web應用程序上載excel工作表。 - 接下來,我想讀取第一行下的每一行。 (所以從第2行開始,第1行將成爲列標題)。 - 最後,我希望將我讀過的字符串傳遞給另一種方法,它將完成我想要的操作,然後發佈到一個gridview。savepath?保存excel到sql?

我打算怎麼做... 因爲我有我的網絡應用程序發佈在網絡上,託管在我的本地盒子......我上傳的文件(桌面)通常的savepath不起作用。 所以我想將它保存到我的本地盒子上託管的SQL Server上。

因此,我想我試圖: - 保存上傳的Excel到SQL數據庫。 - 從excel中讀取每一行,並通過預期方法傳遞

好的,這是超級混亂。必須有一個更簡單的方法來做到這一點! (我真的需要一個SQL數據庫嗎?) 哦,和我的savePath的任何好主意?

+0

需要更多的細節。開發環境?網絡服務器?爲什麼通常的保存路徑不起作用?不知道爲什麼你想要得到一個涉及這個SQL Server。 – Bill 2010-08-13 18:42:08

+0

我得到的savePath是@「C:\ desktop \」,顯然是因爲我在本地盒子上託管了web應用程序,所以無法找到文件路徑。至於涉及SQL,我認爲我將能夠將文件保存到SQL,以便它能夠找到它......這是否有意義? **對不起,我覺得以前的評論會誤導人們相信我真的不需要幫助..當我真的這樣做。嘿嘿。 – loreedee 2010-08-16 20:59:13

回答

0

還沒有真正解決過這個問題。但它更易於閱讀上使用的OleDbConnection這樣的Excel文件無論是:

  try 
      { 
       using (OleDbConnection olcon = new OleDbConnection()) 
       { 
         olcon.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath(fileupFile.FileName) + ";Extended Properties=Excel 12.0"; 
         OleDbCommand olcmd = new OleDbCommand("SELECT * FROM [Sheet1$]", olcon); 
         olcon.Open(); 
         OleDbDataReader olread = olcmd.ExecuteReader(); 
         while (olread.Read()) 
         { 
          line = (String)(olread.GetString(0)); 
          Verify(line); //calls the datatosql method 
         } 
         olcon.Close(); 
         lblFiup.Text = "Data Inserted Sucessfully"; 
         lblFiup.ForeColor = System.Drawing.Color.Green; 
       } 
      } 

然後,進入另一種方法,它使用的SqlConnection寫入到SQL Server。像這樣:

 protected void datatosql(String url, String stat) 
     { 
      try 
      { 
       using (SqlConnection sqlcon = new SqlConnection("Server=(local);Database=URLs;Trusted_Connection=True")) 
       { 
        using (SqlCommand sqlcom = sqlcon.CreateCommand()) 
        { 
         sqlcom.CommandText = "INSERT INTO WEVRecordsTest (URL, Status) VALUES ('" + url + "','" + stat + "')"; 
         sqlcon.Open(); 
         sqlcom.ExecuteNonQuery(); 
         sqlcon.Close(); 
        } 
       } 
      } 
      catch (SqlException se) 
      { 
       lblHist.Text = se.Message; 
       lblHist.ForeColor = System.Drawing.Color.Red; 
      } 
     }