2011-04-18 114 views
4

我需要連接到一個開放 Excel 2003中的文件使用.net 3.5C#閱讀打開Excel通過OleDb的

看來,我想使用希望該文件專門的OLEDB連接文件。但我需要在Excel中同時打開此文件。

非鎖定讀數可能嗎?

編輯:我打開它之前通過複製文件解決了這個問題。

回答

1

這個問題似乎沒有答案。我不能刪除它......

我的解決方案是 - 在定時器上運行宏以保存有問題的Excel文件,並且C#應用程序正在將該文件複製到另一個文件並使用OleDb讀取它。

1

這似乎是一個類似的問題: Writing into excel file with OLEDB

這是否制定出適合你?

+0

沒有人不能寫在一個獨立的文件。我不能從已經在其他地方打開的文件讀取。 – 2011-04-18 10:58:20

1

打開Excel文檔時傳入了哪些參數?您可以將Workbook.Open()中的「ReadOnly」參數設置爲true嗎?見here.

+0

我試圖將OleDb連接字符串中的Mode設置爲Read並且共享Deny None並且都不工作。 – 2011-04-19 13:44:12

+0

好的,首先 - 您是否可以按照我上面的說明打開文檔?如果是這樣,你可以發佈你正在使用的OleDb連接代碼嗎?越多的信息越好。 – dotNetkow 2011-04-19 14:46:15

+0

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

1

請參考下面的代碼如何獲取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());