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
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.