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只读”
它看起来像你可以添加到连接string。
从该页面:
实际上,用OleDbConnection(假设.net在这里)。 您可以在OleDbConnection的连接string中指定只读模式。 以下连接string将阻止您更改数据源中的数据:
const string cnnString = "Provider=Microsoft.ACE.OLEDB.12.0" + ";Mode=Read" + @";Data Source=|DataDirectory|\Northwind 2010.accdb";
它看起来像添加;模式=读取连接string应该做的伎俩。