Поле слишком маленькое, чтобы принять объем данных, которые вы пытались добавить.Кто-нибудь получил эту ошибку от ADO.NET? - PullRequest
4 голосов
/ 13 мая 2011

Обновление файла Excel из набора данных, кажется, работает нормально.Но если у меня есть текст длиной более 255 символов, я получаю ошибку выше.Кто-нибудь еще получил такую ​​ошибку?Как вы это исправите?Я работал над этим пару часов и ничего не получил.Я пробовал возиться со строкой соединения и изменять настройки реестра, но безуспешно.

Ответы [ 2 ]

7 голосов
/ 13 мая 2011

Это не легко исправить.На самом деле мне пришлось использовать что-то вроде хака.

Я попытался вставить текст в поле Excel длиной 262 символа и получил эту ошибку: Поле слишком маленькое, чтобы принять объем данных, который вы пытались добавить.Попробуйте вставить или вставить меньше данных.

Этот трюк / хак легко работает, потому что у меня уже создан документ Excel, и он пуст (т. Е. Нет строк, кроме заголовка).Поэтому в Excel я вставил текст длиной 262 символа (может быть больше 255) в ячейки первого ряда, которые могли получить такой большой текст.После этого я запустил ADO.NET (через VB.NET) и отправил данные через набор данных (ds.Update) в Excel, и все данные прошли без ошибок.

Если кто-то не знает, как в Excel или программном коде сделать так, чтобы ячейки Excel были полями Memo , это единственный способ, который сработал.Я попробовал трюк с реестром, но у меня это не сработало.

0 голосов
/ 21 июня 2017

Я использовал OleDb и с наконечником dotnetN00b мне удалось это сделать.

        string con = string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\temp\\test.xls;Extended Properties=""Excel 8.0;HDR=YES;""");           

        var cnn = new OleDbConnection(con);
        cnn.Open();

        string createCom = "CREATE TABLE [Sheet1] ( [A] string, [B] Memo);";
        string insertCom = "INSERT INTO [Sheet1] VALUES('This can be max 255', 'This one can be realy looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong!');";

        OleDbCommand cmd = new OleDbCommand(createCom, cnn);
        cmd.ExecuteNonQuery();

        cmd = new OleDbCommand(insertCom, cnn);
        cmd.ExecuteNonQuery();

        cnn.Close();
...