簡體   English   中英

C#ace oledb 12只讀文件

[英]C# ace oledb 12 read-only file

我有一個帶有腳本任務的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。

使用谷歌搜索。

我搜索:“ microsoft.ace.oledb.12.0只讀”

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

看起來您可以添加到連接字符串。

從該頁面:

實際上,使用OleDbConnection(此處為.net)。 您可以在OleDbConnection的連接字符串中指定只讀模式。 以下連接字符串將阻止您更改數據源中的數據:

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

看起來,向連接字符串添加; Mode = Read應該可以解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM