2014-01-06 92 views
1

我知道這個問題重複出現,但問題在於我已經嘗試了幾乎所有解決方案的鏈接,但我沒有取得成功。所以這裏是場景: 我有一個輸入類型=文件&當我點擊提交按鈕時,它POST文件。在DataSet中填充數據時找不到可安裝的ISAM

這裏是代碼:

[HttpPost] 
public ActionResult Index(HttpPostedFileBase excel_File) 
{ 
    if (excel_File != null) 
    { 
    //Save the uploaded file to the disc. 
    string saved_FileName = Path.Combine(@ConfigurationManager.AppSettings["excel_file_storage_path"] + excel_File.FileName); // Taking file upload location from web.config 
    excel_File.SaveAs(saved_FileName); 
    var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 12.0 Xml;HDR=YES", saved_FileName); 
    //Fill the dataset with information from the Sheet1 worksheet. 
    var adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString); 
    var ds = new DataSet(); 
    adapter.Fill(ds); // I get error here. 
    DataTable data = ds.Tables[0]; 
    var obj_Table = new DataTable("Sample_Upload_Expense"); 
    obj_Table.Columns.Add("Id", typeof(Int16)); 
    obj_Table.Columns.Add("Name", typeof(string)); 
    for (int i = 0; i < data.Rows.Count - 1; i++) 
    { 
     obj_Table.Rows.Add(data.Rows[i].Field<double>("Id"), data.Rows[i].Field<string>("Name")); 
    } 
    var arrParam = new List<SqlParameter>(); 
    var para = new SqlParameter(); 
    para.ParameterName = "@RowList"; 
    para.SqlDbType = System.Data.SqlDbType.Structured; 
    para.Value = obj_Table; 
    var pNumRowsChanged = new SqlParameter("@NumRowsChanged", SqlDbType.Int); 
    pNumRowsChanged.Value = 0; 
    arrParam.Add(para); 
    arrParam.Add(pNumRowsChanged); 
    string proc = "SPInsertExpense"; 
    int no = DataProvider.ProcRetunAffectedRows(proc, arrParam); 
    return View(); 
} 

幫助我。我被困於2天,我無法找到解決方案。在web.config中

文件路徑:

<appSettings> 
<add key="excel_file_storage_path" value="D:\webapps\uploads\UploadedExcelDocuments\" /> 
</appSettings> 

我曾嘗試:

  1. 我安裝的2007 Office系統驅動器 - 數據連接組件來解決,如果有任何連接問題,但它不工作。
  2. 嘗試在數據源周圍放置單引號。
  3. 我把靜態路徑連接字符串,但也沒有工作。
  4. this,雖然它與我的問題沒有關係。
+1

@pnuts okies,然後I M給ü實例還挺SOLN我試圖與沒有工作。 – Dhwani

回答

1

最後它工作。我試過this,&它工作。在連接字符串中的實際情況,它需要兩個;末尾有(分號)。所以我的connectionString必須像如下:

var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0 Xml;HDR=YES;';", saved_FileName); 
相關問題