kozmikadam Ответов: 1

Редактирование excel с помощью ошибки типа пропущенного совпадения C# OLEDB


Привет,

Я пытаюсь обновить файл excel с помощью c# oledb way.

У меня есть несколько файлов excel. Один из них не имеет никаких проблем, и я могу обновить его так, как хочу.
Но в других файлах excel у меня есть какой-то столбец missmatch.
Я хочу обновить ячейку как строку, но ее тип-это число ( в Excel), поэтому я получаю ошибку несоответствия для этого.

Я смотрю на форумы и вижу, что IMEX=1 может решить эту проблему.
Но когда я добавляю IMEX=1, я получаю эту ошибку :

An unhandled exception of type 'System.Data.OleDb.OleDbException' occurred in System.Data.dll

Additional information: Operation must use an updateable query.


Вот мой кодовый блок :

string excel = String.Format("UPDATE {0} SET F1='{1}'", shtsrg,exres);
string exceltwo = String.Format("UPDATE {0} SET F1='{1}'", shtsrgtwo, exrestwo);

OleDbConnection baglans = new OleDbConnection();
    baglans.ConnectionString = @"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " + yeniDosya + "; Extended Properties = 'Excel 8.0; HDR=NO'";
    baglans.Open();
OleDbCommand cmds = new OleDbCommand(excel, baglans);
cmds.ExecuteNonQuery();
baglans.Close();

OleDbConnection baglanstwo= new OleDbConnection();
baglanstwo.ConnectionString = @"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " + yeniDosya + "; Extended Properties = 'Excel 8.0; HDR=NO; IMEX=1'";
baglanstwo.Open();

OleDbCommand cmdstwo = new OleDbCommand(exceltwo, baglanstwo);

cmdstwo.ExecuteNonQuery();

baglanstwo.Close();


Я использовал 2 соединения только для того, чтобы посмотреть, в чем проблема. Я обновляю 2 колонки. С 1. соединением у меня нет никаких проблем. У меня проблема со вторым.

Есть ли вообще возможность изменить тип данных ячейки excel без Imex ? Или что-нибудь решить обновляемую ошибку запроса ?

Что я уже пробовал:

Imex=1 не решает мою проблему и дает другую.

1 Ответов

Рейтинг:
0

Richard MacCutchan

Сначала вы должны прочитать этот пункт(ы) с помощью SELECT оператор и проверьте, какой именно тип возвращает каждая переменная. Затем вы можете обновить его с правильным значением.


kozmikadam

Я уже знаю их тип и использую select в верхней части этого кода для чтения.
Но мне нужно поместить строковое значение в ячейку, тип которой является целочисленным. Так что я получил ошибку типа missmatch для этого.

Richard MacCutchan

Поэтому не пытайтесь поместить строку в поле, которое принимает только целое число.