在ASP.NET中访问Excel 2013文件

我正在开发一个ASP.NET应用程序。 我有一个名为ExcelApp的Excel 2013文件,我也添加了在我的项目中。 我无法访问该文件。

这是我的DAL类:

public string ExcelConnection = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Nimit\ExcelApplication.xlsx;Extended Properties='Excel 12.0 Xml';HDR=YES"; OleDbDataAdapter DbAdap; DataTable dt; public DataTable Get_ExcelSheet() { OleDbConnection DbCon = new OleDbConnection(ExcelConnection); DbAdap = new OleDbDataAdapter("SELECT * FROM [Sheet1$]",DbCon); dt = new DataTable(); DbAdap.Fill(dt); return dt; } 

我的cs文件代码:

 public partial class WebForm1 : System.Web.UI.Page { DAL obj = new DAL(); protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack == true) { Get_Data(); } } void Get_Data() { GridView1.DataSource = obj.Get_ExcelSheet(); GridView1.DataBind(); } } 

我的debugging器在执行这行时显示错误:

 DbAdap.Fill(dt); 

例外是:

在这里输入图像说明

我解决了我的问题。 这是我的代码:

 public class DAL { OleDbDataAdapter DbAdap; DataTable dt; public DataTable Get_ExcelSheet() { OleDbConnection DbCon = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Nimit\\ExcelApplication.xlsx;Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1;\""); DbAdap = new OleDbDataAdapter("SELECT * FROM [Sheet1$]",DbCon); dt = new DataTable(); DbAdap.Fill(dt); return dt; } } 

我只是在我的OleDbConnection提供我的连接string。 而已。

我想你应该再读一遍例外。 有一个明确的消息,为什么这个代码失败你…我会给你一个提示:

附加信息:“Microsoft.ACE.OLEDB.40”提供程序未在本地计算机上注册

解决这个问题,它应该工作。

而不是Microsoft.ACE.OLEDB.4.0使用Microsoft.ACE.OLEDB.12.0

并尝试通过相对/绝对path。

注意:在我的连接string中,我正在传递filePath + fileName

 connString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0;HDR=NO;IMEX=1\";", filePath + fileName) 

首先检查你的连接string; 它必须包含Excel“ExcelApp.xlsx”的引用。 其次Excel中的ExcelApp $必须引用表单名称,而不是Excel文件名称。

希望你解决这个问题