【发布时间】:2014-03-11 07:06:30
【问题描述】:
美好的一天,我从 excel 文件中读取数据并将其显示给 gridview。但错误提示“Microsoft Jet 数据库引擎无法打开文件''。它已被其他用户以独占方式打开,或者您需要权限才能查看其数据。”
我做了什么:
- 为 IUSR、NETWORK_SERVICE、NETWORK、EVERYONE、USERS 和 ADMIN 授予对文件夹的完全访问权限
提前谢谢你。
String filePath = txtBbSource.Text;
String sheetName = txtSheetName.Text;
string constr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;'";
OleDbConnection con = new OleDbConnection(constr);
OleDbDataAdapter sda = new OleDbDataAdapter("Select * from [" + sheetName + "$]", con);
DataTable dt = new DataTable();
sda.Fill(dt);
gridBalances.DataSource = dt;
【问题讨论】:
-
我一直无法通过 OLEDB 访问 Excel。如果您正在处理较新的 .xlsx 格式,请查看 epplus.codeplex.com 作为替代方案。
-
这可能与权限无关。任一文件已被其他用户、进程或您的代码使用。
-
@EricJ。我可能会在这周尝试 epplus.codeplex :)
-
@Serv 这是我的代码先生 serv。我很确定我关闭了excel。 =)
-
您是否在使用程序阅读时保持打开的 Excel 文件?