Voici la méthode (brute) que j'utilise pour exporter le contenu d'une table dans un fichier CSV. J'ai trouvé cela à la volée, mais les données de la table ont été chargées à partir d'une feuille de calcul Excel créée par un site Sharepoint. Je ne sais pas si ce processus de conversion ou ma méthode est la cause, mais un grand nombre de ces caractères: Â
sont importés dans les cellules.ASP MVC 3 - Exporter vers la méthode CSV, y compris les caractères indésirables ne figurant pas dans la base de données
De plus, un grand nombre d'enregistrements ont leurs champs divisés en deux lignes plutôt qu'une seule. C'est ma première tentative d'exporter vers un CSV par programme (par opposition à l'utilisation d'Excel) donc toute aide serait grandement appréciée.
Contrôleur Méthode
public ActionResult ExportToCsv()
{
using (StringWriter writer = new StringWriter())
{
var banks = db.BankListMaster.Include(b => b.BankListAgentId).ToList();
writer.WriteLine("Bank Name, EPURL, AssociatedTPMBD, Tier, FixedLifeMasterSAF, VariableLifeMasterSAF, FixedLifeSNY, VariableLifeMasterSNY, SpecialNotes, WelcomeLetterReq, " +
"BackOfficeNotification, LinkRepsToDynamics, RelationshipCode, INDSGC, PENSGC, LicensingContract, MiscellaneousNotes, ContentTypeID1, CreatedBy, MANonresBizNY, Attachment");
foreach (var item in banks)
{
writer.Write(item.BankName + ",");
if(String.IsNullOrWhiteSpace(item.EPURL))
{
writer.Write(item.EPURL + ",");
}
else
{
writer.Write(item.EPURL.Trim() + ",");
}
writer.Write(item.AssociatedTPMBD + ",");
writer.Write(item.Tier + ",");
writer.Write(item.LicensingContract + ",");
writer.Write(item.MiscellaneousNotes + ",");
writer.Write(item.ContentTypeID1 + ",");
writer.Write(item.CreatedBy + ",");
writer.Write(item.MANonresBizNY + ",");
writer.Write(item.Attachment);
writer.Write(writer.NewLine);
}
return File(new System.Text.UTF8Encoding().GetBytes(writer.ToString().Replace("Â", "")), "text/csv", "BankList.csv");
}
}
En ce qui concerne les deux lignes, je soupçonne que votre champ Notes diverses peut contenir des retours chariot/saut de ligne. Essayez item.Miscellaneous.TrimEnd (new char [] {'\ r', '\ n'}); – Sparky