[英]KendoUI export to excel with row above table header
导出到 excel 时,如何在表格数据上方添加一个常规的 excel 行? 有一个“从”和“到”过滤器选项,但这似乎只影响列索引。
filter: { from: 1, to: 2 }
将其从 integer 更改为字符串会导致损坏的 excel 文件:
filter: { from: "A2", to: "B2" }
该文档似乎没有提及过滤器的任何其他属性。
我尝试将sheets.rows.type
选项从data
更改为header
但这似乎没有任何作用。
示例导出:
var workbook = new kendo.ooxml.Workbook({
sheets: [
{
filter: { from: 1, to: 2 },
rows: [
// row above table
{ cells: [ { value: "pre table header", "colSpan": 4 } ] },
// table: header
{ cells: [ { value: "First Name" }, { value: "Last Name" } ] },
// table: data
{ cells: [ { value: "John" }, { value: "Doe" } ] },
{ cells: [ { value: "Jane" }, { value: "Doe" } ] }
]
}
]
});
kendo.saveAs({
dataURI: workbook.toDataURL(),
fileName: "Test.xlsx"
});
https://dojo.telerik.com/emUzuPeq
我想要实现的目标:
上面的代码做了什么:
我在剑道网格源中发现了一个未记录的功能。 如果可用,它将在过滤器上使用一个名为“ref”的属性。 这似乎也需要将from
和to
属性更改为 excel 文件中的字符串地址。 不确定这有多稳定,但这适用于最新版本的 kendoui。
filter: { ref: "A2:B2", from: "A2", to: "B2" },
在 excel 导出的事件处理程序中实现,它看起来像
var intFrom = sheet["filter"]["from"];
var intTo = sheet["filter"]["to"];
// kendo uses zero based index for column, but need column 1 to be "A"
var colFrom = excelGetCharFromNumber(intFrom + 1);
var colTo = excelGetCharFromNumber(intTo + 1);
// "2" row is hardcoded here
sheet["filter"] = {
// redefine "from" and "to"
"ref": "" + colFrom + "2:" + colTo + "2",
"from": "" + colFrom + "2",
"to": "" + colTo + "2"
};
这个答案在哪里excelGetCharFromNumber
:
function excelGetCharFromNumber(columnNumber){
var dividend = columnNumber;
var columnName = "";
var modulo;
while (dividend > 0)
{
modulo = (dividend - 1) % 26;
columnName = String.fromCharCode(65 + modulo).toString() + columnName;
dividend = parseInt((dividend - modulo) / 26);
}
return columnName;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.