C#ace oledb 12只读文件

时间:2017-07-18 11:30:22

标签: c# excel oledb

我有一个带脚本任务的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。

1 个答案:

答案 0 :(得分:1)

使用谷歌搜索。

我搜索了:" 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

看起来您可以添加到连接字符串。

从该页面

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

dep_from

看起来像添加; Mode = Read to the connection string应该可以解决问题。