2017-02-16 83 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++; 
        } 
       }