Excel impossible d'insert plus de 255 caractères?

J'utilise le pilote OLE DB pour insert plus de 255 caractères dans une feuille Excel, mais j'ai l'erreur:

Détails d'exception: System.Data.OleDb.OleDbException: le champ est trop petit pour accepter la quantité de données que vous avez tenté d'append. Essayez d'insert ou de coller less de données.

Il semble que ce soit une limitation Excel. Même le site Microsoft semble le dire ici .

Cela signifie-t-il que je ne peux pas programmer, mais je peux manuellement? Parce que je peux entrer plus de 255 caractères lorsque je les tape manuellement dans Excel. Donc est-ce une limitation du pilote Microsoft.ACE.OLEDB.12.0 (AccessDatabaseEngine.exe) ?

Le lien auquel vous parlez est d'environ 256 colonnes et non de caractères. Le problème de 256 caractères est décrit ici avec une solution de contournement: http://support.microsoft.com/kb/213841

J'ai trouvé un moyen plus efficace de gérer ce problème, mes references sont les 2 liens ci-dessous

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

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

En principe, n'utilisez pas l'adaptateur de données, le jeu de données et les parameters pour insert des lignes dans Excel (cela n'a jamais fonctionné pour moi). Utilisez plutôt SQL insert à partir du code directement en utilisant l'object de command

Voici ce que vous devez faire

  1. Déclarez le champ large comme MEMO au lieu de string ou CHAR "CREATE TABLE WorkSheetName (field1 INT, field2 MEMO, field3 …);"
  2. Créez l'instruction d'insertion comme "INSERT INTO WorkSheetName (field1, field2, …) VALUES (1234, 'Any long ssortingng here …', …)"
  3. Déclarez un DbCommand pour exécuter les instructions Create table and Insert ci-dessus, ici j'utilise la command obj de la bibliothèque d'entreprise

    DbCommand dbCommand = m_dbConnection.CreateCommand (); dbCommand.CommandText = "Créer une table …"; dbCommand.CommandType = CommandType.Text; dbCommand.ExecuteNonQuery ();

    dbCommand.CommandText = "Insérer dans …"; dbCommand.CommandType = CommandType.Text; dbCommand.ExecuteNonQuery ();

Ma solution à ce problème est d'append un text dont la longueur est supérieure à 255 caractères sur la première ligne de la colonne. OleDB traitera cette colonne comme type MEMO puis peut insert plus de 255 caractères dans une cellule.