我正在研究并尝试找到将特定数据导出到Excel电子表格的方法。
我找到的网站与this类似,它们返回数据库中的每条记录。
在我的Web应用程序中,我有一个View确实返回数据库中的所有记录,但我也使用Predicate Builder
,以便用户可以根据其特定参数对记录进行排序。将使用此应用程序的用户将使用0 /兴趣将每个记录导出为excel。
所以,我的问题是如何将参数(谓词)与导出到excel的方法结合起来?
我没有任何代码可以显示,因为我在研究中没有找到任何示例,为我提供了如何将参数与导出组合到excel的基础。
答案 0 :(得分:1)
我的代码中没有使用PredicateBuilder,但我使用它做了一个例子。也许你必须适应一些事情。
public ActionResult Export(string PatientName, string BirthDate, string Gender, string PatientType)
{
ViewBag.PatientName = PatientName ?? "";
ViewBag.BirthDate = BirthDate ?? "";
ViewBag.Gender = Gender ?? "";
ViewBag.PatientType = PatientType ?? "";
var predicate = PredicateBuilder.True<Patient>();
if (!string.IsNullOrEmpty(PatientName))
{
predicate = predicate.And(i => i.FirstName.ToLower().StartsWith(PatientName) || i.LastName.ToLower().StartsWith(PatientName));
}
if (!string.IsNullOrEmpty(Gender))
{
int gender;
Int32.TryParse(Gender, out gender);
predicate = predicate.And(i => i.Gender == gender);
}
if (!string.IsNullOrEmpty(PatientType))
{
int type;
Int32.TryParse(PatientType, out type);
predicate = predicate.And(i => i.PatientType == type);
}
if (!string.IsNullOrEmpty(BirthDate))
{
DateTime dob;
DateTime.TryParse(BirthDate, out dob);
predicate = predicate.And(i => EntityFunctions.TruncateTime(i.BirthDate) == EntityFunctions.TruncateTime(dob));
}
var patients = db.Patients.Where(predicate).Select(i => i).Include(p => p.DropDownOption).Include(p => p.DropDownOption1);
GridView gv = new GridView();
gv.DataSource = patients.ToList();
gv.DataBind();
Response.ClearContent();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment; filename=IbiliPasswords.xls");
Response.ContentType = "application/ms-excel";
Response.Charset = "";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gv.RenderControl(htw);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
return RedirectToAction("Index");
}
Index.cshtml:
@Html.ActionLink("Export Info", "Export", new { PatientName = ViewBag.PatientName, BirthDate= ViewBag.BirthDate, Gender= ViewBag.Gender, PatientType= ViewBag.PatientType})
希望它对你有所帮助。