我需要連接到一個開放 Excel 2003中的文件使用.net 3.5C#閱讀打開Excel通過OleDb的
看來,我想使用希望該文件專門的OLEDB連接文件。但我需要在Excel中同時打開此文件。
是非鎖定讀數可能嗎?
編輯:我打開它之前通過複製文件解決了這個問題。
我需要連接到一個開放 Excel 2003中的文件使用.net 3.5C#閱讀打開Excel通過OleDb的
看來,我想使用希望該文件專門的OLEDB連接文件。但我需要在Excel中同時打開此文件。
是非鎖定讀數可能嗎?
編輯:我打開它之前通過複製文件解決了這個問題。
這個問題似乎沒有答案。我不能刪除它......
我的解決方案是 - 在定時器上運行宏以保存有問題的Excel文件,並且C#應用程序正在將該文件複製到另一個文件並使用OleDb讀取它。
這似乎是一個類似的問題: Writing into excel file with OLEDB
這是否制定出適合你?
打開Excel文檔時傳入了哪些參數?您可以將Workbook.Open()中的「ReadOnly」參數設置爲true嗎?見here.
我試圖將OleDb連接字符串中的Mode設置爲Read並且共享Deny None並且都不工作。 – 2011-04-19 13:44:12
好的,首先 - 您是否可以按照我上面的說明打開文檔?如果是這樣,你可以發佈你正在使用的OleDb連接代碼嗎?越多的信息越好。 – dotNetkow 2011-04-19 14:46:15
cnnString =「Provider = Microsoft.Jet.OLEDB.4.0; Data Source =」+ this.path +「; Mode = Share Deny None; Extended Properties = \」Excel 8.0; HDR = YES \「」; <<<如果文檔已經在Excel中打開,那麼我在C#代碼中得到異常。還試過Mode = Read。 – 2011-04-19 15:02:49
請參考下面的代碼如何獲取Excel數據信息到數組中。然後,您將在該Excel表單上執行任何驗證。
var fileName = @"D:\Pavan\WorkDiployed.xlsx";
var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0; data source={0}; Extended Properties=Excel 12.0;", fileName);
OleDbConnection con = new System.Data.OleDb.OleDbConnection(connectionString);
OleDbDataAdapter cmd = new System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", con);
con.Open();
System.Data.DataSet excelDataSet = new DataSet();
cmd.Fill(excelDataSet);
DataTable data = excelDataSet.Tables[0];
DataRow[] arrdata = data.Select();
foreach (DataRow rw in arrdata)
{
object[] cval = rw.ItemArray;
}
con.Close();
MessageBox.Show (excelDataSet.Tables[0].ToString());
沒有人不能寫在一個獨立的文件。我不能從已經在其他地方打開的文件讀取。 – 2011-04-18 10:58:20