kendo-ui - 剑道网格数据导出到excel文件

标签 kendo-ui kendo-grid

我已经配置了剑道网格并配置了所有表格行和标题。当我点击导出按钮时,它正在生成一个 excel 文件。
IE 那里没有生成文件,而是显示了 URL 中的数据格式 data:application/vnd.ms-excel,<table><tr><th>OrderID</th><th>Freight</th>.....

   var grid = $("#grid").kendoGrid({
        dataSource: {
            type           : "odata",
            transport      : {
                read: "http://demos.kendoui.com/service/Northwind.svc/Orders"
            },
            schema         : {
                model: {
                    fields: {
                        OrderID  : { type: "number" },
                        Freight  : { type: "number" },
                        ShipName : { type: "string" },
                        OrderDate: { type: "date" },
                        ShipCity : { type: "string" }
                    }
                }
            },
            pageSize       : 10
        },
        filterable: true,
        sortable  : true,
        pageable  : true,
        columns   : [
            {
                field     : "OrderID",
                filterable: false
            },
            "Freight",
            {
                field : "OrderDate",
                title : "Order Date",
                width : 100,
                format: "{0:MM/dd/yyyy}"
            },
            {
                field: "ShipName",
                title: "Ship Name",
                width: 200
            },
            {
                field: "ShipCity",
                title: "Ship City"
            }
        ]
    }).data("kendoGrid");

单击按钮将网格数据导出到 Excel。
$("#btnExport").click(function(e) {

 var dataSource =  $("#grid").data("kendoGrid").dataSource; 
     var filteredDataSource = new kendo.data.DataSource( { 
         data: dataSource.data(), 
         filter: dataSource.filter() 
     }); 

 filteredDataSource.read();
 var data = filteredDataSource.view();

 var result = "data:application/vnd.ms-excel,";

 result += "<table><tr><th>OrderID</th><th>Freight</th><th>Order Date</th><th>Ship Name</th><th>Ship City</th></tr>";

 for (var i = 0; i < data.length; i++) {
     result += "<tr>";

     result += "<td>";
     result += data[i].OrderID;
     result += "</td>";

     result += "<td>";
     result += data[i].Freight;
     result += "</td>";

     result += "<td>";
     result += kendo.format("{0:MM/dd/yyyy}", data[i].OrderDate);
     result += "</td>";

     result += "<td>";
     result += data[i].ShipName;
     result += "</td>";

     result += "<td>";
     result += data[i].ShipCity;
     result += "</td>";

     result += "</tr>";
 }

 result += "</table>";
 if (window.navigator.msSaveBlob) {
        window.navigator.msSaveBlob(new Blob([result]),'export.xls');
    } else {
        window.open(result);
    }


 e.preventDefault();
});

最佳答案

尝试这个,

把这个放在 result += "</table>"; 之后它适用于所有浏览器。

if (window.navigator.msSaveBlob) {
                window.navigator.msSaveBlob(new Blob([result]), 'exporteddata' + postfix + 'export.csv');
            }
            else if (window.webkitURL != null) {
                // Chrome allows the link to be clicked programmatically.
                var a = document.createElement('a');
                var table_div = (document.getElementById('grid').getElementsByTagName('tbody')[0]);
                var table_html = table_div.innerHTML.replace();
                a.href = result;
                a.download = 'exporteddata' + postfix + 'export.csv';
                a.click();
            }
            else {
                window.open(result);
            }

关于kendo-ui - 剑道网格数据导出到excel文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18782116/

相关文章:

javascript - Kendo UI - 调度程序 - 添加事件

javascript - 当单元格更改时如何刷新自定义剑道网格过滤器

javascript - $(document).ready(function () $未定义

c# - 在 ASP.NET MVC 中使用 Kendo MultiSelect 和 Kendo UI Grid

kendo-ui - 在 KendoGrid 中创建一个未绑定(bind)到数据源的列

jquery - Kendo Dropdownlist 未更新第一条记录上的 Kendo Grid 数据源?

javascript - Kendo UI 中添加记录功能,始终插入两行

javascript - 如何将复选框添加到 Kendo Grid 的工具栏?

javascript - Angular 范围和 Kendo UI 控件

javascript - Kendo Scheduler 不显示数据