为什么数据表自定义在双字母列中不起作用?

问题描述 投票:0回答:1

我有一个每月时间表数据表,我将其导出到 Excel。但是当我打开 Excel 时,包含该月天数的行(标题行)显示为数字。我想显示为日期。

Here is the displayed 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')

},

还有其他方法可以做到这一点吗?

javascript datatables export-to-excel
1个回答
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
        }
    });

© www.soinside.com 2019 - 2024. All rights reserved.