2015-10-26 54 views
0

當我試圖上傳Excel文件與劍道ui我在internet.Net中找到一個代碼。它使用一個名爲「常量」的關鍵字,但此關鍵字不識別「.xls」文件!extension.I我堅持這一點,並做了一些研究,但都無人接聽解決this.Please幫助,感謝這裏是我的代碼:Excel文件上傳與KendoUı

public ActionResult Submit(IEnumerable<HttpPostedFileBase> files) 
     { 
      if(files!= null) 
      { 
       string fileName; 
       string filePath; 
       string fileExtension; 
       foreach(var f in files) 
       { 
        //Set file details 
        SetFileDetails(f, out fileName, out filePath, out fileExtension); 

        if(fileExtension == Constants.xls || fileExtension == Constants.xlsx) 
        { 
         //Save the uploaded file to app folder 
         string savedExcelFiles = Constants.UploadedFolder + fileName; 
         f.SaveAs(Server.MapPath(savedExcelFiles)); 

         ReadDataFromExcelFiles(savedExcelFiles); 
        } 
        else 
        { 
         //file not supported send alert 
        } 

       } 
      } 
      return RedirectToActionPermanent("Index","Connect"); 
     } 

     private static void SetFileDetails(HttpPostedFileBase f,out string fileName,out string filePath,out string fileExtension) 
     { 
      fileName=Path.GetFileName(f.FileName); 
      fileExtension=Path.GetExtension(f.FileName); 
      filePath = Path.GetFullPath(f.FileName); 
     } 

     private void ReadDataFromExcelFiles(string savedExcelFiles) 
     { 
      var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 12.0;",Server.MapPath(savedExcelFiles)); 

      //fill the DataSet by the sheets 
      var adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]",connectionString); 
      var ds = new DataSet(); 
      List<UploadExcel> uploadExl = new List<UploadExcel>(); 

      adapter.Fill(ds,"Subscriber"); 
      DataTable data=ds.Tables["Subscriber"]; 

      GetSetUploadExcelData(uploadExl,data); 
     } 

     private static void GetSetUploadExcelData (List<UploadExcel> uploadExl,DataTable data) 
     { 
      for(int i=0;i<data.Rows.Count-1;i++) 
      { 
       UploadExcel NewUpload = new UploadExcel(); 
       NewUpload.ID = Convert.ToInt16(data.Rows[i]["ID"]); 
       NewUpload.CostCenter = Convert.ToString(data.Rows[i]["CostCenter"]); 
       NewUpload.FirstName = Convert.ToString(data.Rows[i]["FirstName"]); 
       NewUpload.LastName = Convert.ToString(data.Rows[i]["LastName"]); 

       NewUpload.MobileNo = Convert.ToString(data.Rows[i]["MobileNo"]); 
       NewUpload.EmailID = Convert.ToString(data.Rows[i]["EmailID"]); 
       NewUpload.Services = Convert.ToString(data.Rows[i]["Services"]); 

       NewUpload.UsageType = Convert.ToString(data.Rows[i]["UsageType"]); 
       NewUpload.Network = Convert.ToString(data.Rows[i]["Network"]); 
       NewUpload.UsageIncluded = Convert.ToInt16(data.Rows[i]["UsageIncluded"]); 
       NewUpload.Unit = Convert.ToString(data.Rows[i]["Unit"]); 

       uploadExl.Add(NewUpload); 
      } 
     } 
    } 

回答

0

我懷疑Constants.xls涉及靜態classenum的原始代碼作者正在使用以保存.xls/.xlsx擴展名。

如果創建一個常數類是這樣的:

public static class Constants 
{ 
    public static string xls = "xls"; 
    public static string xlsx = "xlsx"; 
} 

這則應該有所幫助。

如果您需要更多幫助,請讓我知道。

編輯:只是審查代碼,他們似乎也在上傳文件夾位置不斷映射,所以我懷疑這只是一個靜態類,而不是具有應用程序特定細節的枚舉。有點像使用webconfig中的appSettings

+0

代碼片段不工作,因爲你說它不是一個靜態字段,但我會再試一遍可能是我錯過了一些東西,感謝您的關注,有一個美好的一天。 – malkovich