2013-08-04 1 views
2

Я делаю следующее, чтобы вставить строку на листе excel, используя Microsoft.ACE.OLEDB в качестве поставщика в коде C#: 1- у меня есть следующая строка соединения:Как вставить новую строку в лист Excel с помощью Microsoft.Ace.Oledb в VS 2012, используя C#

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 полное разрешение для изменения группой пользователей «Все», но все же имеет то же исключение. Я действительно потерялся здесь, я пробовал так много вещей, и я был бы признателен за любую помощь; я почти уверен, что это глупая ошибка!

ответ

0

Я проверил ваш код: он работает, если вы удалите 'Mode = ReadWrite; ReadOnly = False;' строки подключения.