Экспорт в Excel с помощью Predicate Builder

Я исследую и пытаюсь найти способ экспортировать определенные данные в таблицу Excel.

Сайты, которые я нашел, похожи на эти, где они возвращают каждую запись в базе данных.

В моем веб-приложении у меня есть представление, которое возвращает все записи в базе данных, но я также использую Predicate Builder так что пользователь может сортировать записи на основе их конкретных параметров. У пользователя, который будет использовать это приложение, будет 0 использовать / интерес для экспорта каждой записи в Excel.

Итак, мой вопрос: как мне объединить параметры (предикат) с методом, который экспортирует в excel?

У меня нет кода для показа, потому что я не нашел ни одного примера в своем исследовании, чтобы дать мне основу для сочетания параметров с экспортом в Excel.

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})

Надеюсь, это поможет вам.

Другие вопросы по тегам