J'essaie d'analyser un fichier CSV sur une liste d'un article d'une classe donnée. Je suis assez nouveau au monde Dotnet. J'utilise .NET (2.2.402)
Ceci est le code de ma classe ceci est la section du code où j'essaie d'analyser le fichier p> c'est le Contenu du fichier p> Comme vous pouvez le voir pour le souci de test, j'ai hu marché le chemin. C'est l'erreur que je reçois p> csvhelper.headervalidationException: en-tête avec nom 'msisdn' n'était pas
a trouvé. Si vous attendez des en-têtes manquants et que vous voulez
Ignorer cette validation, définissez la configuration heavalideated sur NULL.
Vous pouvez également modifier la fonctionnalité pour faire autre chose, comme
connecter le problème. à
Csvhelper.configuration.configurationIfonction.configurationS.Anghabalidated (Boolean
Isvalid, String [] Headnames, Int32 HeaderNameDex, LectureContext
Contexte) chez csvhelper.csvreader.validateheader (carte de classe Map) à
Csvhelper.csvreader.getRecordst + Movenext () à
System.linq.enumerable.count [Tsource] (source iEnumerable`1) à
Ombulkpayment.Controls.PaymentsController.Payment (SavePaymentResource
ressource) dans
C: \ Utilisateurs \ BMHB8456 \ SOURCE \ REPOS \ OMBULKPAYMENT \ OMBULKPAYMENT \ CONTRÔLAIRES \ PAIEMENTSCONTROLLER.CS: Ligne
59 chez Lambda_Method (fermeture, objet, objet []) à
Microsoft.extensions.internal.ObjectMethodexecutor.execute (objet
cible, objet [] paramètres) à
Microsoft.aspnetcore.mvc.internal.actionMethodexecuteur.syncActionResultexecutor.execute (iacctionResultTyPeMapper
Mapper, ObjectMethodExecutor Executor, Contrôleur d'objet, Objet []
Arguments) P>
blockQuote> p>
3 Réponses :
définir explicitement le délimiteur. Remplacez la ligne avec p> Le délimiteur par défaut dépend des paramètres régionaux du système appelé Séparateur de liste. P> Retirez également les espaces entre le nom d'en-tête du fichier CSV. Gardez-les comme ci-dessous: P> Msisdn,Amount,PersonName,Message,Description,Notify
Pas vraiment sûr de CSVHelper, mais vous n'avez pas besoin de composants supplémentaires pour lire des fichiers CSV Nativement ... Vous pouvez utiliser OLEDB pour le lire comme fichier de données plat:
public DataTable ReadCsv(string filename, bool hasHeaders = true, string delimiter = ",") { var dt = new System.Data.DataTable(); var fi = new System.IO.FileInfo(filename); var connStr = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"{0}\";Extended Properties='text;HDR={1};FMT=Delimited({2})';", fi.DirectoryName, ((hasHeaders) ? "Yes" : "No"), delimiter); var commStr = string.Format("SELECT * FROM [{0}]", fi.Name); using (var conn = new System.Data.OleDb.OleDbConnection(connStr)) using (var cmd = new System.Data.OleDb.OleDbCommand(commStr, conn)) using (var adapter = new System.Data.OleDb.OleDbAdapter(cmd)) { adapter.Fill(dt); } return dt; }
Nice Trouver sur l'utilisation de CSVHelper , c'est un projet open source et est la bibliothèque la plus facile que je ' J'ai trouvé à utiliser.
J'ai essayé les suivantes avec vos données de test et j'ai été capable de le faire fonctionner avec succès: p> Vous pouvez afficher un exemple presque identique répertorié sur leur site ici . p> p>
Cela échoue sur le tout premier domaine de la toute première rangée. Cela indique parfois un problème plus vaste, par ex. Le fichier est en réalité en blanc, contient des caractères non valides, voire une ligne vierge en haut. Vérifiez le fichier.
Je travaillais sur Windows 10 OS, après la commutation de MacOS High Sierra, je reçois l'erreur exacte