阅读打开的Excel文件时OleDBException

我有一个excel文件和一个oledb连接到它。 当在Windows打开文件时读取数据时,会引发以下错误(在Adapter.Fill方法中)。

但是,文件没有手动打开时,代码运行正常。

 private System.Data.DataSet GetExcelData() { // Create new DataSet to hold information from the worksheet. System.Data.DataSet objDataset1 = new System.Data.DataSet(); DataTable dt = new DataTable(); try { string path = ConfigurationManager.AppSettings["ExcelFilePath"]; //string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;"; string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1;\""; OleDbConnection objConn = new OleDbConnection(connectionString); objConn.Open(); //String strConString = "SELECT * FROM [Data Version5.2$A2:ZZ] where [Status] = 'aa'";//Status String strConString = "SELECT * FROM [Data Version5.2$A2:ZZ] where [Status] IS NULL OR [Status]='SubReport'";//Status SubReport OleDbCommand objCmdSelect = new OleDbCommand(strConString, objConn); OleDbDataAdapter objAdapter1 = new OleDbDataAdapter(); // Pass the Select command to the adapter. objAdapter1.SelectCommand = objCmdSelect; // Fill the DataSet with the information from the work sheet. objAdapter1.Fill(objDataset1, "ExcelData"); objConn.Close(); } catch (Exception ex) { throw ex; } return objDataset1; } 

错误消息是

在这里输入图像说明

假设您不需要写入文件,请尝试调整连接string以包含只读模式( Mode=Read )。 我有我的(我不需要写入文件)我从来没有从已经打开的工作簿读取问题:

 string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Mode=Read;Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1;\""; 

我也不倾向于将Excel文件读取为XML,所以我的连接string的扩展属性是Excel 12.0;HDR=YES;IMEX=1;