本地打开Excel文件出现错误,请指教!

礼拜六~~ 2018-07-18 03:48:32

打开EXCEL文件读取里面的内容,构建datatable数据,如果不提前在电脑打开这个表格文件,便会提示conn.open()打开错误,如果在电脑上打开文件便一切正常。将文件上传到服务器后,通过网站上传Excel 文件时,便出现以下错误


Microsoft Jet 数据库引擎打不开文件''。 它已经被别的用户以独占方式打开,或没有查看数据的权限。
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Data.OleDb.OleDbException: Microsoft Jet 数据库引擎打不开文件''。 它已经被别的用户以独占方式打开,或没有查看数据的权限。

源错误:


执行当前 Web 请求期间生成了未经处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

堆栈跟踪:

以下为程序代码,请指教!!

private DataTable GetDataFromExcelWithAppointSheetName(string path)
{
//连接串
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0; " + "Data Source=" + path + ";" + " Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);

conn.Open();

//返回Excel的架构,包括各个sheet表的名称,类型,创建时间和修改时间等
DataTable dtSheetName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" });

//包含excel中表名的字符串数组
string[] strTableNames = new string[dtSheetName.Rows.Count];
for (int k = 0; k < dtSheetName.Rows.Count; k++)
{
strTableNames[k] = dtSheetName.Rows[k]["TABLE_NAME"].ToString();
}

OleDbDataAdapter myCommand = null;
DataTable dt = new DataTable();

//从指定的表明查询数据,可先把所有表明列出来供用户选择
string strExcel = "select * from [" + strTableNames[0] + "]";
myCommand = new OleDbDataAdapter(strExcel, strConn);
dt = new DataTable();
myCommand.Fill(dt);
conn.Close();
conn.Dispose();

//this.GridView1.DataSource = dt;
//this.GridView1.DataBind();

return dt;
}
...全文
322 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2018-07-19
  • 打赏
  • 举报
回复
你的access是2007版以上创建的,不兼容,不要用jet4.0,用ace12.0以上
礼拜六~~ 2018-07-19
  • 打赏
  • 举报
回复
引用 2 楼 caozhy 的回复:
你的access是2007版以上创建的,不兼容,不要用jet4.0,用ace12.0以上

曾经更换过也是如此,郁闷中~~~~~~~~~~
丰云 2018-07-18
  • 打赏
  • 举报
回复
从没遇到过这种倒毛的错误。。。。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧