Я пытаюсь использовать сетки компонент встроенной поддержки для экспорта в Excel, применяя пользовательское форматирование ячейки, как показано в этих Документах Telerik:Кендо UI Сетка - Excel Экспорт скрытых столбцов и пользовательского форматирования
http://docs.telerik.com/kendo-ui/controls/data-management/grid/how-to/excel/cell-format
подход с использованием жестко закодированных индексов строк/ячеек в экспорте поставляется с довольно очевидным вопросом при экспорте сетки с ранее скрытой колонке отображается - лучший способ воспроизвести это ссылаться на этот jsfiddle:
https://jsfiddle.net/3anqpnqt/1/
- Run скрипка
- Нажмите на экспорт, чтобы преуспеть - соблюдать пользовательское форматирование чисел
- Unhide подкатегория колонка (с помощью меню колонки)
- Нажмите на экспорт, чтобы преуспеть - соблюдать пользовательское форматирование чисел в столбце 2, который в настоящее время «подкатегории '
Со ссылкой на этот код в скрипкой:
$("#grid").kendoGrid({
toolbar: ["excel"],
excel: {
fileName: "Grid.xlsx",
filterable: true
},
columns: [
{ field: "productName" },
{ field: "category" },
{ field: "subcategory", hidden: true },
{ field: "unitPrice"}
],
dataSource: [
{ productName: "Tea", category: "Beverages", subcategory: "Bev1", unitPrice: 1.5 },
{ productName: "Coffee", category: "Beverages", subcategory: "Bev2", unitPrice: 5.332 },
{ productName: "Ham", category: "Food", subcategory: "Food1", unitPrice: -2.3455 },
{ productName: "Bread", category: "Food", subcategory: "Food2", unitPrice: 6 }
],
columnMenu: true,
excelExport: function(e) {
var sheet = e.workbook.sheets[0];
for (var rowIndex = 0; rowIndex < sheet.rows.length; rowIndex++) {
var row = sheet.rows[rowIndex];
var numericFormat = "#,##0.00;[Red](#,##0.00);-";
for (var cellIndex = 0; cellIndex < row.cells.length; cellIndex++) {
var cell = row.cells[cellIndex];
if (row.type === "data") {
if (cellIndex == 2) { // how are we able to identify the column without using indexes?
cell.format = numericFormat;
cell.hAlign = "right";
}
}
}
}
}
});
Что мне нужно, чтобы определить ячейку как «unitPrice» и применить формат, но проверка объектной модели в обработчике excelExport
не дает мне возможности сделать эту ссылку. В моем реальном приложении у меня есть несколько настраиваемых форматов для применения (проценты, n0, n2 и т. Д.), Поэтому это не так просто, как идти $.isNumeric(cell.value)
или иначе.
Обновление
Также нужно решение для работы с группами столбца/строки, которые генерируют дополнительные строки заголовка/столбцов в модели Excel.
Я не знаю, поможет ли эта ссылка, но я должен был написать свой собственный синтаксический анализатор и экспортер в Excel и PDF до официальной поддержки. Я думаю, что колонка/строка и рекурсивная группировка в основной структуре сетки остаются. Если вы можете распутать мой код много лет назад, вы можете обнаружить рекурсивную взаимосвязь между группами и столбцами. -> https://stackoverflow.com/questions/25753051/having-difficulty-creating-an-array-of-json-objects-for-use-in-a-kendo-grid/25753400#25753400 –