2017-02-16 67 views
1

The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.進口代碼 'Microsoft.ACE.OLEDB.12.0' 供應商在進口代碼的ASP .NET

if (flexcel.HasFile) 
      { 
       string fileExtension = System.IO.Path.GetExtension(flexcel.FileName); 

       if (fileExtension == ".xls" || fileExtension == ".xlsx") 
       { 
        string fileLocation = Server.MapPath("../Content/MailMarketing/") + flexcel.FileName + month; 

        if (System.IO.File.Exists(fileLocation)) 
        { 

         // System.IO.File.Delete(fileLocation); 
        } 
        flexcel.SaveAs(fileLocation); 
        string excelConnectionString = string.Empty; 
        excelConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + 
        Server.MapPath("~/Content/MailMarketing/") + flexcel.FileName + month + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\""; 
        //connection String for xls file format. 
        if (fileExtension == ".xls") 
        { 
         excelConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + 
         fileLocation + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\""; 
        } 
        //connection String for xlsx file format. 
        else if (fileExtension == ".xlsx") 
        { 
         excelConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + 
         Server.MapPath("~/Content/MailMarketing/") + flexcel.FileName + month + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\""; 
        } 
        //Create Connection to Excel work book and add oledb namespace 
        OleDbConnection excelConnection = new OleDbConnection(excelConnectionString); 
        excelConnection.Open(); 

如何解決?

我已經下載這個軟件,但仍然無法正常工作..任何建議?

https://www.microsoft.com/en-us/download/details.aspx?id=23734 

我已經嘗試了很多代碼,但同樣的問題..任何建議?

+0

你試過[安裝它(http://stackoverflow.com/questions/6649363/microsoft-ace-oledb-12-0-provider-is-not - 在本地機器上註冊) – mickadoo

+0

是................ –

+0

任何猜測它不工作..? –

回答

0

不需要擔心只有oledb ..有很多其他方法用於上傳.xlsx文件(導入)。

這裏是標頭:

using ClosedXML.Excel; 

從安裝的NuGet DLL ClosedXML.Excel

下面是代碼:

string filePath = Server.MapPath("~/Content/MailMarketing/") + Path.GetFileName(flexcel.PostedFile.FileName); 
     flexcel.SaveAs(filePath); 

     //Open the Excel file using ClosedXML. 
     using (XLWorkbook workBook = new XLWorkbook(filePath)) 
     { 
      //Read the first Sheet from Excel file. 
      IXLWorksheet workSheet = workBook.Worksheet(1); 

      //Create a new DataTable. 
      DataTable dt = new DataTable(); 

      //Loop through the Worksheet rows. 
      bool firstRow = true; 
      foreach (IXLRow row in workSheet.Rows()) 
      { 
       //Use the first row to add columns to DataTable. 
       if (firstRow) 
       { 
        foreach (IXLCell cell in row.Cells()) 
        { 
         dt.Columns.Add(cell.Value.ToString()); 
        } 
        firstRow = false; 
       } 
       else 
       { 
        //Add rows to DataTable. 
        dt.Rows.Add(); 
        int i = 0; 
        foreach (IXLCell cell in row.Cells()) 
        { 
         dt.Rows[dt.Rows.Count - 1][i] = cell.Value.ToString(); 
         i++; 
        } 
       }