Kendo UI MVC 网格导出到 Excel 什么都不做

Kendo UI Grid for MVC export to Excel does nothing

我正在为 MVC 4.0 使用 Kendo 网格。我有最新的 DLL 2015.1.318.440。我包括 jszip.js。我复制并粘贴了示例中的代码:

          .ToolBar(tools => tools.Excel())
          .Excel(excel => excel.FileName("Enrollments.xlsx"))

它什么都不做。按钮改变颜色,仅此而已。我尝试时没有收到任何错误。它只是什么都不做。我没有使用代理服务器。我是 运行 这个 Chrome 最新版本。

网格

@(Html.Kendo().Grid<Trawick.Agents.Models.EnrollmentPolicy>()
.Name("grid")
    .ToolBar(tools => tools.Excel())              
    .Excel(excel => excel
   .FileName("Enrollments.xlsx")
       .Filterable(true)
       .ProxyURL(Url.Action("Excel_Export_Save", "Enrollments"))
     )              
     .Columns(columns =>
      {
       columns.Bound(p => p.enrollment_date)
          })
     .Pageable()
     .Groupable()
     .Sortable()
     .DataSource(dataSource => dataSource
     .Ajax()
     .PageSize(20)
     .Read(read => read.Action("Enrollments_Read", "Enrollments")))
)

控制器

    [HttpPost]
    public ActionResult Excel_Export_Save(string contentType, string base64, string fileName)
    {
        var fileContents = Convert.FromBase64String(base64);

        return File(fileContents, contentType, fileName);
    }
    public ActionResult Enrollments_Read([DataSourceRequest]DataSourceRequest request, int? id)
    {
        string sql = "SELECT * FROM EnrollmentPolicy ";
        sql += SearchParams.SetSearch(this);
        return Json(GetEnrollments(sql).ToDataSourceResult(request));
    }

包含 jszip 的捆绑文件

bundles.Add(new ScriptBundle("~/js/kendo")
     .Include("~/Scripts/jszip.js")
     .Include("~/Scripts/kendo.all.min.js")
     .Include("~/Scripts/kendo.aspnetmvc.min.js"));

根据文档,我认为您需要这样做。

控制器

[HttpPost]
    public ActionResult Excel_Export_Save(string contentType, string base64, string fileName)
    {
        var fileContents = Convert.FromBase64String(base64);

        return File(fileContents, contentType, fileName);
    }

cshtml

 .Excel(excel => excel
    .FileName("Enrollments.xlsx")
    .Filterable(true) //omit this if you don't need filtering in excel
    .ProxyURL(Url.Action("Excel_Export_Save", "Grid")) // for browsers not supporting saving file from JS
 )

参考演示代码here and for documentation, go through this link

我刚才遇到了同样的问题 - 导出按钮没有任何作用。我是 运行 Q3 2014 版本的 Kendo。

升级到最新的 DLL 并更新到最新的 JavaScript 库和样式为我解决了这个问题。

        bundles.Add(new ScriptBundle("~/js/kendo")
            .Include("~/Scripts/kendo.all.min.js")
            .Include("~/Scripts/kendo.aspnetmvc.min.js")
            .Include("~/Scripts/jszip.js"));

这是 issue.jszip 必须包含在 kendo 脚本之后(这与文档所说的相反)。

我的问题与数量有关 - 较少数量的记录有效,大批量则无效。我当前的解决方法是设置 AllPages(false),然后它只会导出过滤后的列表。参见 http://www.telerik.com/forums/excel-export-not-working-with-more-than-a-thousand-records