2017-02-14 10 views
0

私はExcelテンプレートをアップロードすることができ、そのテンプレートからのコンテンツはデータテーブルにフェッチされ、その後SQL Serverデータベースで更新されるaspxページを持っています。 OLEDBデータプロバイダが使用されています。上記の接続文字列でOLEDB接続文字列では、データソースはDATASOURCE = {0}とは何ですか?

Conn =new OleDbConnection(string.Format("Provider=Microsoft.ACE.OLEDB.12.0; Data Source={0};Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1;'", filename))

、データソースがData Source ={0}それが何を意味するとして与えられていますか?

これは、UPLOADボタンの背後にあるコードです。

 protected void Button1_Click(object sender, EventArgs e) 
    { 
     if (FileUpload1.FileName.ToString() == "") 
     { 
      lblMessage.Text = "Please select the File to Upload"; 
      lblMessage.ForeColor = System.Drawing.Color.Red; 
      return; 
     } 

     string filename = Server.MapPath("Temp/" + FileUpload1.FileName.ToString()); 
     FileUpload1.SaveAs(filename); 
     HttpPostedFile postedFile = this.FileUpload1.PostedFile; 
     OleDbConnection Conn = null; 
     OleDbDataAdapter DA; 
     DataTable DT = new DataTable(); 
     DataTable tempDT = new DataTable(); 
     if (Path.GetExtension(postedFile.FileName) == ".xls") 
     { 
      Conn = new OleDbConnection(string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1;'", filename)); 
      OleDbCommand excelCmd = new OleDbCommand(); 
      string sheet_Name = ""; 
      excelCmd.Connection = Conn; 
      excelCmd.Connection.Open(); 
      DT = excelCmd.Connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); 

      sheet_Name = DT.Rows[0]["TABLE_NAME"].ToString(); 
      excelCmd.Connection.Close();     

      if (sheet_Name == "") 
      { 
       //Throw Excption if Sheet is not present in file 
      } 

      DA = new OleDbDataAdapter(string.Format("select * from [{0}]", sheet_Name), Conn); 

      DA.Fill(DT);    

      string Qno = string.Empty; 
      string Qdesc = string.Empty; 
      string Header = string.Empty; 
      int Dorder; 
      string eAlert = string.Empty; 



      foreach (DataRow dr in DT.Rows) 
      { 
       if (!DT.Columns.Contains("QuestionNo")) 
       { 
        lblMessage.Text = "QuestionNo ColumnName Mismatching"; 
        lblMessage.ForeColor = System.Drawing.Color.Red; 
        grd_Questions.DataBind(); 
        return; 
       } 
       else if (!DT.Columns.Contains("QuestionDesc")) 
       { 
        lblMessage.Text = "QuestionDesc ColumnName Mismatching"; 
        lblMessage.ForeColor = System.Drawing.Color.Red; 
        grd_Questions.DataBind(); 
        return; 
       } 
       else if (!DT.Columns.Contains("Type")) 
       { 
        lblMessage.Text = "Type ColumnName Mismatching"; 
        lblMessage.ForeColor = System.Drawing.Color.Red; 
        grd_Questions.DataBind(); 
        return; 
       } 
       else if (!DT.Columns.Contains("e-Alert")) 
       { 
        lblMessage.Text = "e-Alert ColumnName Mismatching"; 
        lblMessage.ForeColor = System.Drawing.Color.Red; 
        grd_Questions.DataBind(); 
        return; 
       } 
       else if (!DT.Columns.Contains("DisplayOrder")) 
       { 
        lblMessage.Text = "DisplayOrder ColumnName Mismatching"; 
        lblMessage.ForeColor = System.Drawing.Color.Red; 
        grd_Questions.DataBind(); 
        return; 
       } 
       else 
       { 
        PQ.updateQuestion(); 
       } 

      } 

答えて

1

つまり、データソースはExcelファイルになります。実行中に '{0}'部分は 'filename'(カンマ部分の後)に置き換えられます。あなたのExcelファイルがデータベースとして機能するようにします。

("Provider={0};Data Source={1};Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1;'", Microsoft.ACE.OLEDB.12.0, filename) 

これも機能します。

関連する問題