Excel не может вставить более 255 символов? - PullRequest
3 голосов
/ 20 декабря 2010

Я использую драйвер OLE DB для вставки более 255 символов в лист Excel, но получаю ошибку:

Сведения об исключении: System.Data.OleDb.OleDbException: поле слишкоммаленький, чтобы принять количество данных, которые вы пытались добавить.Попробуйте вставить или вставить меньше данных.

Из этой цепочки кажется, что это ограничение Excel.Кажется, даже на сайте Microsoft так написано здесь .

Значит ли это, что я не могу программно, но я могу вручную?Потому что я могу ввести более 255 символов, когда я вручную набираю их в Excel.Так ли это Microsoft.ACE.OLEDB.12.0 (AccessDatabaseEngine.exe) драйвер ограничение?

Ответы [ 3 ]

4 голосов
/ 06 июля 2012

Я нашел более эффективный способ решения этой проблемы, мои ссылки приведены по 2 ссылкам ниже

http://support.microsoft.com/kb/316934

http://www.codeproject.com/Articles/37055/Working-with-MS-Excel-xls-xlsx-Using-MDAC-and-Oled

Как правило, не используйте адаптер данных, набор данных и параметры для вставки строк в Excel (у меня это никогда не работало), вместо этого запускайте вставку SQL из кода напрямую, используя объект команды

Вот что вам нужно сделать

  1. Объявление широкого поля как MEMO вместо строки или CHAR. "CREATE TABLE WorkSheetName (поле1 INT, поле2 MEMO, поле3 ...);"
  2. Создайте оператор вставки как "INSERT INTO WorkSheetName (field1, field2, ...) VALUES (1234, 'Любая длинная строка здесь ...', ...)"
  3. Объявите команду DbCommand для запуска операторов Create table и Insert выше, здесь я использую команду obj из библиотеки предприятия

    DbCommand dbCommand = m_dbConnection.CreateCommand (); dbCommand.CommandText = "Создать таблицу ..."; dbCommand.CommandType = CommandType.Text; dbCommand.ExecuteNonQuery (); * * тысяча двадцать-одна

    dbCommand.CommandText = "Вставить в ..."; dbCommand.CommandType = CommandType.Text; dbCommand.ExecuteNonQuery ();

4 голосов
/ 25 июня 2014

Мой способ обойти эту проблему - добавить текст, длина которого превышает 255 символов, в первой строке столбца.OleDB будет обрабатывать этот столбец как тип MEMO, а затем он может вставить в ячейку более 255 символов.

2 голосов
/ 20 декабря 2010

Ссылка, на которую вы ссылаетесь, составляет около 256 столбцов, а не символов. Проблема с 256 символами описана здесь с обходным путем: http://support.microsoft.com/kb/213841

...