在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文件名称。
希望你解决这个问题