我有一个每月时间表数据表,我将其导出到 Excel。但是当我打开 Excel 时,包含该月天数的行(标题行)显示为数字。我想显示为日期。
我添加了以下代码片段。它有效,但仅限于 Z 列,并且在 AA、AB、AC 等列中不起作用。
customize: function(xlsx, row) {
var sheet = xlsx.xl.worksheets['sheet1.xml'];
// Add date format to first line - not work for AA, AB,etc.
$('row:eq(1) c', sheet).attr('s', '67')
// Add number format for column A excel recognized as date
// this work on every column
$('row c[r*="A"]', sheet).attr('s', '0')
},
还有其他方法可以做到这一点吗?
你的做法是正确的。不幸的是,Excel 处理的行与 Z 列不同...在 Z 之后,格式发生变化,代码失败。
所以你需要做的是抓取行并循环每个单元格本身以填充整行:
customize: function(xlsx, row) {
var sheet = xlsx.xl.worksheets['sheet1.xml'];
var firstRow = $('row:eq(1)', sheet);
firstRow.children().each(function() {
$(this).attr('s', '67');
});
但是要小心!这将向第一行添加大量列(10k+) 所以你需要添加一个退出点:
var firstRow = $('row:eq(1)', sheet);
var maxCol = 36;
var currentCol = 0;
firstRow.children().each(function() {
if (currentCol < maxCol) {
$(this).attr('s', '67');
currentCol++;
} else {
return false; // exit loop
}
});