2013-08-04 105 views
2

我正在做以下操作,在Excel表中使用Microsoft.ACE.OLEDB作爲提供程序在c#代碼中插入一行: 1 - 我有以下連接字符串:如何在Excel表中使用Microsoft.Ace.Oledb在Excel 2012中使用Microsoft.Ace.Oledb插入新行#

string connectionString = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=test.xlsx;Mode=ReadWrite;ReadOnly=False;Extended Properties=""Excel 12.0 Xml;IMEX=1;TypeGuessRows=0;ImportMixedTypes=Text;HDR=YES"""); 

2和下面的代碼中插入:

 string strSQL = "INSERT INTO [sheet1$] (Id, Name, parentId) VALUES(196,'test',1)"; 
     OleDbConnection excelConnection = new OleDbConnection(connectionString); 
     excelConnection.Open(); 
     OleDbCommand dbCommand = new OleDbCommand(strSQL, excelConnection); 
     dbCommand.ExecuteNonQuery(); 
     dbCommand.Dispose(); 
     excelConnection.Close(); 
     excelConnection.Dispose(); 

但是,一旦我跑我的代碼,我有以下OleDbException例外,打開連接時:

Could not find installable ISAM 

我做了我的搜索,發現它涉及到一個錯誤的連接字符串格式,所以經過幾次嘗試後,我發現當我刪除「ReadOnly = False;」從連接字符串OleDbException例外變更爲:

Operation must use an updateable query 

當執行命令「dbCommand.ExecuteNonQuery」;所以我也做了我的搜索,發現它是一個權限問題,所以我給了Excel文件一個完整的權限,以便被用戶組「Everyone」修改,但仍然有相同的異常。 我真的迷失在這裏,我嘗試了很多東西,我會很感激任何幫助;我很確定這是一個愚蠢的錯誤!

回答

0

我用你的代碼做了一個測試:它似乎工作,如果你刪除'Mode = ReadWrite; ReadOnly = False;'的連接字符串。

相關問題