Open joeldow opened 10 years ago
The column name is not being respected in the output file. What am I doing wrong?
Model:
public class ItemExportCSVModel { [CsvColumn(Name="ID", FieldIndex=1)] public int ID { get; set; } [CsvColumn(Name = "GUID", FieldIndex = 2)] public string Guid { get; set; } [CsvColumn(Name = "FirstName", FieldIndex = 3)] public string FirstName { get; set; } [CsvColumn(Name = "LastName", FieldIndex = 4)] public string LastName { get; set; } [CsvColumn(Name = "employee_number", FieldIndex = 5)] public string EmployeeNumber { get; set; } [CsvColumn(Name = "email", FieldIndex = 6)] public string Email { get; set; } [CsvColumn(Name = "date_of_purchase", FieldIndex = 7)] public DateTime DateOfPurchase { get; set; } [CsvColumn(Name = "IMEI", FieldIndex = 8)] public string IMEI { get; set; } [CsvColumn(Name = "Product", FieldIndex = 9)] public string Product { get; set; } [CsvColumn(Name = "order_number", FieldIndex = 10)] public string OrderNumber { get; set; } [CsvColumn(Name = "Status", FieldIndex = 11)] public string Status { get; set; } [CsvColumn(Name = "Reason", FieldIndex = 12)] public string Reason { get; set; } }
Controller:
private CsvActionResult<ItemExportCSVModel> CSVExporter_SaveCSV(CSVExporter Model) { List<Dictionary<string, object>> list = JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(Model.Data); List<ItemExportCSVModel> toExport = new List<ItemExportCSVModel>(); foreach (var dict in list) { toExport.Add(new ItemExportCSVModel() { ID = dict.ContainsKey("StatusValue") ? int.Parse(dict["ItemId"] != null ? dict["ItemId"].ToString() : "-1") : -1, Guid = dict.ContainsKey("ItemGuid") ? dict["ItemGuid"].ToString() : null, FirstName = dict.ContainsKey("FirstName") ? dict["FirstName"].ToString() : null, LastName = dict.ContainsKey("LastName") ? dict["LastName"].ToString() : null, EmployeeNumber = dict.ContainsKey("employee_number") ? dict["employee_number"].ToString() : null, Email = dict.ContainsKey("UserEmail") ? dict["UserEmail"].ToString() : null, DateOfPurchase = dict.ContainsKey("date_of_purchase") ? DateTime.Parse(dict["date_of_purchase"] as string ?? DateTime.MaxValue.ToString()) : DateTime.MaxValue, IMEI = dict.ContainsKey("IMEI") ? dict["IMEI"].ToString() : null, Product = dict.ContainsKey("ProductName") ? dict["ProductName"].ToString() : null, OrderNumber = string.Empty, Status = dict.ContainsKey("StatusValue") ? dict["StatusValue"].ToString() : null, Reason = dict.ContainsKey("Reason") ? dict["Reason"].ToString() : null }); } CsvFileDescription outputFileDescription = new CsvFileDescription { SeparatorChar = ',', FirstLineHasColumnNames = true, FileCultureName = "en-US" }; CsvContext cc = new CsvContext(); string fileName = string.Format("item-details-export_{0}{1}_{2}.csv", toExport.Count(), (Model.UpdateStatusTo > 0 ? ("_" + Model.UpdateStatusTo.ToString()) : string.Empty), DateTime.Now.ToString("yyyy.MM.dd.hh.mmssfff")); string finalPath = Server.MapPath(_CSVExportPath) + fileName; //Save the CSV for our records. cc.Write(toExport, finalPath, outputFileDescription); //Return the result of the CSV return new CsvActionResult<ItemExportCSVModel>(toExport, fileName, ','); }
The column name is not being respected in the output file. What am I doing wrong?
Model:
Controller: