En analysant un fichier Excel en C #, les cellules semblent être coupées à 255 caractères ... comment puis-je arrêter cela?
Je suis d'analyse par le biais d'un uploadé les fichiers excel (xlsx) dans asp.net avec c#. Je suis en utilisant le code suivant (simplifié):
string connString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileLocation + ";Extended Properties=\"Excel 12.0 Xml;HDR=YES\";");
OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connString);
DataSet ds = new DataSet();
adapter.Fill(ds);
adapter.Dispose();
DataTable dt = ds.Tables[0];
var rows = from p in dt.AsEnumerable() select new { desc = p[2] };
Cela fonctionne parfaitement, mais si il n'y a rien de plus de 255 caractères dans la cellule, il sera coupé. Toute idée de ce que je fais de mal? Merci.
EDIT: Lors de l'affichage de la feuille excel, il affiche beaucoup plus de 255 caractères, donc je ne crois pas que la feuille elle-même est limité.
source d'informationauteur naspinski
Vous devez vous connecter pour publier un commentaire.
Juste à partir d'une rapide recherche sur Google sur le sujet, il apparaît que c'est une limite d'Excel.
MODIFIER: Solution de contournement Possible (malheureusement en VB)
La Solution!
J'ai été aux prises avec aujourd'hui. J'ai finalement réussi à le faire fonctionner en modifiant certaines clés de registre avant l'analyse de la feuille de calcul Excel.
Vous devez mettre à jour cette clé de registre avant l'analyse de la feuille de calcul Excel:
Changement
TypeGuessRows
à0
etImportMixedTypes
àText
sous cette clé. Vous aurez également besoin de mettre à jour votre chaîne de connexion pour inclureIMEX=1
dans les propriétés étendues:Références
http://blogs.vertigo.com/personal/aanttila/Blog/archive/2008/03/28/excel-and-csv-reference.aspx
http://msdn.microsoft.com/en-us/library/ms141683.aspx
Que je suis venu à travers ce, et la solution qui a fonctionné pour moi a été de déplacer les cellules avec un long texte en haut de la feuille de calcul.
J'ai trouvé ce commentaire dans un forum qui décrit le problème
Espère que cela aide quelqu'un d'autre!
Avez-vous essayé le réglage de l'colonnes de type de données texte dans la feuille de calcul? Je crois que cela va permettre aux cellules contiennent beaucoup plus que 255 caractères.
[Modifier]
Pour ce que ça vaut cette boîte de dialogue avec le MS-Excel équipe est une lecture intéressante. Dans la section des commentaires au bas ils entrent dans certaines discussions à ce sujet 255 coupure. Ils disent Excel 12 peut soutenir 32k caractères par cellule.
Si c'est vrai, il doit y avoir un moyen d'obtenir ces données. Voici deux choses à considérer.
Dans le passé, j'ai utilisé le "IMEX=1" option dans ma chaîne de connexion à traiter avec des colonnes contenant des données mixtes apparaît comme vide. C'est un longshot, mais vous pourriez donner que d'essayer.
Pourriez-vous exporter le fichier en un fichier délimité par des tabulations de fichier plat? À mon humble avis c'est le moyen le plus fiable de traiter avec des données Excel, car Excel n'ont donc beaucoup de pièges.
SpreadsheetGear pour .NET peut lire et écrire (et plus) aux formats xls et xlsx classeurs et prend en charge les mêmes limitations que Excel pour le texte - en d'autres termes, il va juste travailler. Il y a une évaluation gratuite si vous voulez lui donner un essai.
Avertissement: je possède SpreadsheetGear LLC
Concernant le dernier post, j'utilise aussi SpreadsheetGear et de trouver qu'il souffre également de 255 caractères par cellule limitation lors de la lecture de l'ancienne XLS (pas XLSX) format.