使用模板值将Kendo UI网格导出到Excel

时间:2015-11-05 12:28:01

标签: javascript excel kendo-ui telerik kendo-grid

我试图关注the example,但这对我不起作用。我有:

<div class="outer-wrapper">
  <div class="container">
    <div class="left">
      <span>Menu</span>
    </div>
    <div class="right">
      <span><input type="checkbox" checked autocomplete="off"> Checkbox1</span><br>
      <span><input type="checkbox" checked autocomplete="off"> Checkbox2</span><br>
      <span><input type="checkbox" checked autocomplete="off"> Checkbox3</span>
    </div>
  </div>
</div>

但是它只保留导出“zone_id”而不是名称,即function invoicedJobsGrid() { var invoicedJobsDS = new kendo.data.DataSource({ serverFiltering: true, serverSorting: true, serverPaging: true, pageSize: 25, requestEnd: function (e) { if (e.type == 'read') { $('.today-count').html(e.response.counts.today); $('.week-count').html(e.response.counts.week); $('.month-count').html(e.response.counts.month); // document.title = 'Invoiced jobs (' + (e.response.counts.currencies.GBP + e.response.counts.currencies.USD + e.response.counts.currencies.EUR) + ')'; } }, sort: { field: "invoice_id", dir: "desc" }, transport: { read: { url: 'invoiced-list', dataType: 'json', type: 'POST' } }, error: function (e) { alert(e.errorThrown + "\n" + e.status + "\n" + e.xhr.responseText); }, filter: [{ field: 'invoice_date', operator: 'gte', value: $('.month-count').parent().data('period') }], schema: { data: "data", total: 'total', model: { id: 'id', fields: { invoice_id: { type: 'number' }, entity_id: { type: 'number' }, job_id: { type: 'number' }, invoice_date: { type: 'date' }, invoiceDate: { type: 'date' }, jobType: { type: 'number' }, customer_name: { type: 'string' }, termId: { type: 'number' }, account_number: { type: 'string' }, firstName: { type: 'string' }, sales_area_id: { type: 'number' }, margin: { type: 'number' }, sales_total: { type: 'number' }, sales_total_gdp: { type: 'number' }, job_costs_value_pounds: { type: 'number' }, vat_native: { type: 'number' }, buying_parts_value_pounds: { type: 'number' }, buying_fees_value_pounds: { type: 'number' }, shipping_value_pounds: { type: 'number' }, symbol: { type: 'string' }, margin_percent: { type: 'number' }, zone_name: { type: 'string' }, zone_id: { type: 'number' }, buying_total: { type: 'number' }, emailed_date: { type: 'date' } } } }, aggregate: [ {field: "buying_total", aggregate: "sum"}, {field: "buying_total", aggregate: "average"}, {field: "shipping_value_pounds", aggregate: "sum"}, {field: "shipping_value_pounds", aggregate: "average"}, {field: "job_costs_value_pounds", aggregate: "sum"}, {field: "job_costs_value_pounds", aggregate: "average"}, {field: "buying_fees_value_pounds", aggregate: "sum"}, {field: "buying_fees_value_pounds", aggregate: "average"}, {field: "buying_parts_value_pounds", aggregate: "sum"}, {field: "buying_parts_value_pounds", aggregate: "average"}, {field: "sales_total", aggregate: "sum"}, {field: "sales_total", aggregate: "average"}, {field: "margin", aggregate: "sum"}, {field: "margin", aggregate: "average"}, {field: "sales_total_gdp", aggregate: "sum"}, {field: "sales_total_gdp", aggregate: "average"}, {field: "vat_native", aggregate: "sum"}, {field: "vat_native", aggregate: "average"}, ] }) var invoicedJobsGrid = $('#invoicedJobsGrid').kendoGrid({ toolbar: ["excel"], excel: { allPages: true }, excelExport: function(e) { var sheet = e.workbook.sheets[0]; var template = kendo.template(this.columns[6].template); for (var i = 1; i < sheet.rows.length; i++) { var row = sheet.rows[i]; var dataItem = { zone_name: row.cells[5].value }; row.cells[5].value = template(dataItem); console.log(row.cells[5]) } }, dataSource: invoicedJobsDS, autoBind: true, height: 680, editable: false, pageable: { pageSizes: [25, 50, 'All'], messages: { display: '{0} - {1} of {2} invoiced jobs', empty: 'There are no invoiced jobs', itemsPerPage: 'invoiced jobs per page' } }, dataBound: function (e) { var grid = e.sender; if (grid.dataSource.total() == 0) { var colCount = grid.columns.length; $(e.sender.wrapper) .find('.k-grid-content tbody') .append('<tr class="kendo-data-row no-results-row"><td colspan="' + colCount + '" class="no-data">No invoiced jobs for current filters</td></tr>'); } }, columns: [ { title: 'Account #', field: 'accountNumber', width: '100px', template: '#=accountNumber ? accountNumber : "<i class=\\"fa fa-pencil create-account-number\\"></i>"#' }, { title: 'Customer', field: 'name', template: '<a href="/laravel/entity/#=entity_id#" target="_blank">#=name#</a>' }, { title: 'Date', field: 'invoice_date', width: '85px', template: '<abbr title="#=kendo.toString(invoice_date, "dd/MM/yyyy at HH:mm")#">#=kendo.toString(invoice_date, "dd/MM/yyyy")#</abbr>' }, { title: 'Invoice', field: 'invoice_id', width: '80px', template: '<a href="/laravel/invoice/#=enquiry_id#" target="_blank">#=invoice_id#</a>' }, { title: 'Job', field: 'job_id', width: '65px', template: '<a href="/laravel/activity/#=enquiry_id#" target="_blank">#=job_id#</a>' }, { title: 'Trdr', headerTemplate: '<abbr title="Trader">Trdr</abbr>', field: 'traderId', width: '90px', template: '<abbr title="#=full_name#">#=trader#</abbr>', filterable: { ui: gridFunctions.traderFilterUI, extra: false } }, { title: 'Zone', field: 'zone_id', filterable: { ui: gridFunctions.zoneFilterUI, extra: false }, width: '120px', template: '#=zone_name#' }, { title: 'Sales (native)', headerTemplate: 'Sales <small>native</small>', field: 'sales_total_native', width: '110px', template: '#=symbol+kendo.toString(sales_total_native, "n2")#' }, { title: 'VAT', field: 'vat_native', filterable: false, sortable: false, width: '80px', template: '#=symbol+kendo.toString(vat_native, "n2")#', footerTemplate: '#: kendo.toString(sum, "n2") #<br /><span class="text-warning">#: kendo.toString(average, "n2") #</span>' }, { title: 'Total', field: 'sales_total', filterable: false, sortable: false, width: '100px', template: '#=symbol+kendo.toString(sales_total, "n2")#', footerTemplate: '#: kendo.toString(sum, "n2") #<br /><span class="text-warning">#: kendo.toString(average, "n2") #</span>' }, { title: 'Margin', field: 'margin', width: '100px', template: '<abbr title="#=kendo.toString(margin_percent, "p2")#">#=sales_symbol##=kendo.toString(margin, "n2")#</abbr>', footerTemplate: '£#: kendo.toString(sum, "n2") #<br /><span class="text-warning">£#: kendo.toString(average, "n2") #</span>' }, { title: 'VAT #', field: 'vatNumber', width: '110px', template: '#=vatNumber ? vatNumber : "<i class=\\"fa fa-pencil create-vat-number\\"></i>"#' }, { title: 'Total (£)', field: 'sales_total_gdp', width: '100px', template: '<abbr title="Using an exchange rate of: #=rate#">#=sales_symbol##=kendo.toString(sales_total_gdp, "n2")#</abbr>', footerTemplate: '#: kendo.toString(sum, "n2") #<br /><span class="text-warning">#: kendo.toString(average, "n2") #</span>' }, { title: 'Term', field: 'term_id', width: '90px', filterable: { ui: gridFunctions.paymentTermsFilterUI, extra: false }, template: '#=term#' }, { headerTemplate: 'Buying <small>parts</small>', field: 'buying_parts_value_pounds', width: '110px', template: '#=sales_symbol##=kendo.toString(buying_parts_value_pounds, "n2")#', footerTemplate: '#: kendo.toString(sum, "n2") #<br /><span class="text-warning">#: kendo.toString(average, "n2") #</span>' }, { headerTemplate: 'Buying <small>fees</small>', field: 'buying_fees_value_pounds', width: '100px', template: '#=sales_symbol##=kendo.toString(buying_fees_value_pounds, "n2")#', footerTemplate: '#: kendo.toString(sum, "n2") #<br /><span class="text-warning">#: kendo.toString(average, "n2") #</span>' }, { headerTemplate: 'Shipping', field: 'shipping_value_pounds', width: '90px', template: '#=sales_symbol##=kendo.toString(shipping_value_pounds, "n2")#', footerTemplate: '#: kendo.toString(sum, "n2") #<br /><span class="text-warning">#: kendo.toString(average, "n2") #</span>' }, { headerTemplate: 'Job costs', field: 'job_costs_value_pounds', width: '95px', template: '#=sales_symbol##=kendo.toString(job_costs_value_pounds, "n2")#', footerTemplate: '#: kendo.toString(sum, "n2") #<br /><span class="text-warning">#: kendo.toString(average, "n2") #</span>' }, { headerTemplate: 'Buying <small>total</small>', field: 'buying_total', width: '105px', template: '#=sales_symbol##=kendo.toString(buying_total, "n2")#', footerTemplate: '#: kendo.toString(sum, "n2") #<br /><span class="text-warning">#: kendo.toString(average, "n2") #</span>' }, /*{ headerTemplate: 'Email invoices', field: 'email_invoices', filterable: { ui: gridFunctions.yesNoFilterUI.bind(activeGrid), extra: false }, hidden: true, width: '125px', template: '#=email_invoices ? "Yes" : "No"#' },*/ { headerTemplate: 'Print invoices', field: 'print_invoices', filterable: { ui: gridFunctions.yesNoFilterUI.bind(activeGrid), extra: false }, hidden: true, width: '125px', template: '#=print_invoices ? "Yes" : "No"#' }, { headerTemplate: 'Invoice emailed', field: 'emailed_date', hidden: true, width: '150px', template: '#=emailed_date ? kendo.toString(emailed_date, "dd/MM/yyyy at HH:mm") : "-"#' }, { title: 'ZoneName', field: 'zone_name', hidden: true, template: '#=zone_name#' }, ], filterable: true, sortable: true, scrollable: true }).data("kendoGrid"); } 应该是14,但它没有,它出现为Italy。< / p>

如何输出模板内容而不是原始值?

0 个答案:

没有答案