Export Kendo grid to csv
Export a Kendo grid to csv for opening in Excel (Rachel Hagerman)
by manoj
HTML
<script src="http://cdn.kendostatic.com/2013.2.918/js/kendo.all.min.js"></script>
<link rel="stylesheet" href="http://cdn.kendostatic.com/2013.2.918/styles/kendo.default.min.css">
<link rel="stylesheet" href="http://cdn.kendostatic.com/2013.2.918/styles/kendo.common.min.css">
<script src="https://rawgithub.com/uber-rob/kendo-grid-csv-download/master/kendo.grid.csv.download.js"></script>
<script src="https://rawgithub.com/eligrey/FileSaver.js/master/FileSaver.js"></script>
<button data-bind="click:saveGridCsv">Download to CSV</button>
<div id="test-grid" data-role="grid" data-bind="source: remoteSource"
data-columns='[
{
field: "user.screen_name",
title: "User"
} ,
{
field: "text",
title: "Text"
}
]'></div>
JavaScript
(function () {
var log = (function (el) {
return function (text) {
el.html(el.html() + '<br/>' + text);
};
})($('#log'));
var viewModel = kendo.observable({
saveGridCsv: function () {
viewModel.exportCsv('test-grid', 'testdata.csv');
},
// the remote datasource
remoteSource: new kendo.data.DataSource({
transport: {
read: {
dataType: "jsonp",
url:"http://demos.kendoui.com/service/Twitter/Search?q=kendoui",
data: function (response) {
return [response];
}
}
},
schema: {
data: function(data) {
return data.statuses || [];
},
},
}),
exportCsv: function (gridId, fileName) {
var grid = $("#" + gridId).data("kendoGrid");
var originalPageSize = grid.dataSource.pageSize();
var csv = '';
fileName = fileName || 'download.csv';
// Increase page size to cover all the data and get a reference to that data
grid.dataSource.pageSize(grid.dataSource.view().length);
var data = grid.dataSource.view();
//add the header row
for (var i = 0; i < grid.columns.length; i++) {
var field = grid.columns[i].field;
var title = grid.columns[i].title || field;
//NO DATA
if (!field) continue;
title = title.replace(/"/g, '""');
csv += '"' + title + '"';
if (i < grid.columns.length - 1) {
csv += ',';
}
}
csv += '\n';
//add each row of data
for (var row in data) {
...