Я пытаюсь экспортировать свои данные, чтобы преуспеть файл, и я строительный объект и передать его на экспорт, я хочу, чтобы проверить, прежде чем строить полный объект, но он неэкспорта KeyValuePair преуспеть
public ActionResult ExportToExcel(int roleId, int? levelId)
{
var moduleItems = db.C_UserItems
.Include(x => x.S_Registration)
.Where(x => x.RoleId == roleId);
if (levelId != null)
moduleItems = moduleItems.Where(x => x.S_Registration.LevelId == levelId);
List<object> objList = new List<object>();
int i = 0;
foreach (var item in moduleItems)
{
i++;
List<KeyValuePair<string, object>> obj = new List<KeyValuePair<string, object>>();
obj.Add(new KeyValuePair<string, object>("Num", i));
obj.Add(new KeyValuePair<string, object>("Name", item.Name));
obj.Add(new KeyValuePair<string, object>("Email", item.Email));
if (roleId == 5)
{
obj.Add(new KeyValuePair<string, object>("Phone", item.Phone));
obj.Add(new KeyValuePair<string, object>("CellPhone", item.CellPhone));
}
objList.Add(obj);
}
SaveToExcel(objList);
return RedirectToAction("Index", new { id = roleId, levelId = levelId });
}
и это мой метод экспорта
protected void SaveToExcel(List<object> objList)
{
//Save result as excel file
HttpResponse response = System.Web.HttpContext.Current.Response;
// first let's clean up the response.object
response.Clear();
// set the response mime type for excel
response.ContentType = "application/vnd.ms-excel";
response.AddHeader("Content-Disposition", "attachment;filename=\"Alaglan.xls\"");
response.ContentEncoding = System.Text.Encoding.Unicode;
response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());
using (StringWriter sw = new StringWriter())
{
using (HtmlTextWriter htw = new HtmlTextWriter(sw))
{
// instantiate a datagrid
GridView dg = new GridView();
dg.DataSource = objList;
dg.DataBind();
dg.RenderControl(htw);
response.Write(sw.ToString());
response.End();
}
}
}
результат выглядит как кол, емкости для каждой строки, я попробовал другой путь, прежде чем построить этот объект, и он работает хорошо, но его так трудно для построения больших данных,
if (roleId == 4)
{
objList.Add(new
{
m = i,
name = item.Name,
email = item.Email
});
}
else
{
objList.Add(new
{
m = i,
name = item.Name,
email = item.Email,
identity = item.S_Registration.Identification
});
}
кто может помочь мне, пожалуйста, за лучший способ построить объект с некоторой проверки
У меня есть более чем 150 колонок для экспорта в каждой строке, и некоторые из этих колонн я должен проверить, прежде чем сделать его, поэтому я искал решение поможет мне сделать это, последний код, который я добавил, работает отлично, но я не могу проверить свойства легко, я должен повторить целые столбцы, поэтому я попытался использовать keyvaluepairs, но он не работал правильно –
Затем переключитесь на 'DataTable', как я сказал в обновленном ответе. См. «DataTable» также обеспечивает легкий доступ к строкам/значениям (в отличие от анонимных объектов). – Dusan
Мне очень жаль, но вы можете объяснить свой ответ небольшим количеством кода, чтобы понять это, заранее спасибо –