C#ace oledb 12只读文件

我有一个脚本任务的SSIS包。 c#脚本使用ACE Oledb 12.0提供程序连接到excel文件。 问题是,如何以只读模式连接到excel文件(如果有人打开文件,我的脚本不应该有错误 – 它应该工作)。 代码,我尝试在这里:

string fileToTest = Dts.Variables["User::FileName"].Value.ToString(); string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + fileToTest + @";Extended Properties=""Excel 8.0;READONLY=1"""; OleDbConnection excelConnection = new OleDbConnection(connectionString); excelConnection.Open(); string sqlQuery = "SELECT * FROM [SheetName$A1:FZ1000]"; OleDbDataAdapter dataAdt = new OleDbDataAdapter(sqlQuery, excelConnection); DataSet dataSt = new DataSet(); dataAdt.Fill(dataSt, "TblName1"); DataTable dataTbl = dataSt.Tables["TblName1"]; 

我收到oledbexception,如果有人打开文件。

使用谷歌来search。

我search了:“microsoft.ace.oledb.12.0只读”

https://social.msdn.microsoft.com/Forums/office/en-US/498cd52a-b0ee-4c8d-8943-2b76055b4130/oledbconnection-read-only-mode?forum=accessdev

它看起来像你可以添加到连接string。

从该页面:

实际上,用OleDbConnection(假设.net在这里)。 您可以在OleDbConnection的连接string中指定只读模式。 以下连接string将阻止您更改数据源中的数据:

 const string cnnString = "Provider=Microsoft.ACE.OLEDB.12.0" + ";Mode=Read" + @";Data Source=|DataDirectory|\Northwind 2010.accdb"; 

它看起来像添加;模式=读取连接string应该做的伎俩。