【问题标题】:How to export excel sheet with formula using node-excel-export?如何使用 node-excel-export 导出带有公式的 Excel 工作表?
【发布时间】:2018-02-26 07:00:36
【问题描述】:

我正在使用 node.js 中的node-excel-export 模块将我的数据从 DB 导出到 Excel 表中。

这里的问题是,我希望 excel 表附带应用于特定单元格的公式。

网站中的文档没有清楚地展示公式的用法。

这是我尝试过的:

var XLSX = require('xlsx');

function getSheet(data, opts) {
    var ws = {};

    var range = {
        s: {
            c:0, 
            r:0
        }, 
        e: {
            c:3, 
            r:3 
        }
    };

    for(var R = 0; R < 4; R++) {
        for(var C = 0; C < 3; C++) {

            var cell = {
                v: data[R][C] ,
                t: 'n'
            };

            var cell_ref = XLSX.utils.encode_cell({
                c:C,
                r:R
            });

            if(C == 2) {
                cell_ref.f = "A"+R+"B"+R;
            }

            ws[cell_ref] = cell;
        }
    }
    ws['!ref'] = XLSX.utils.encode_range(range);
    return ws;
}


var data = [
    [1, 2],
    [3, 4],
    [5, 6], 
    [7, 8]
];

function Workbook() {
    if(!(this instanceof Workbook)) {
        return new Workbook();
    }
    this.SheetNames = [];
    this.Sheets = {};
}

var wb = new Workbook();
var wsName = "SheetJS";
wb.SheetNames.push(wsName);
wb.Sheets[wsName] = getSheet(data);


module.exports = {
    dataset: [],
    getExcelFile: function (resultset, res) {

        /* write file */
        XLSX.writeFile(wb, 'test.xlsx');

        res.download('test.xlsx');
    }
};

`

请帮忙。

【问题讨论】:

  • 请发布您到目前为止所尝试的内容。
  • @P5Coder 我已经包含了代码请帮助。

标签: javascript node.js excel excel-formula export-to-excel


【解决方案1】:

找到好的解决方案。

我犯了两个错误

1.使用cell.f代替cell_ref.f

2.公式修正。

如果对他人有帮助,请更新代码:

var XLSX = require('xlsx');

function getSheet(data, opts) {
    var ws = {};

    var range = {
        s: {
            c:0, 
            r:0
        }, 
        e: {
            c:3, 
            r:3 
        }
    };

    for(var R = 0; R < 4; R++) {
        for(var C = 0; C < 3; C++) {

            var cell = {
                v: data[R][C],
                t: 'n'
            };

            var cell_ref = XLSX.utils.encode_cell({
                c:C,
                r:R
            });

            if(C == 2) {
                cell.f = "A"+ (R+1) +"+B" + (R+1);
            }

            ws[cell_ref] = cell;
        }
    }
    ws['!ref'] = XLSX.utils.encode_range(range);
    return ws;
}


var data = [
    [1, 2],
    [3, 4],
    [5, 6], 
    [7, 8]
];

function Workbook() {
    if(!(this instanceof Workbook)) {
        return new Workbook();
    }
    this.SheetNames = [];
    this.Sheets = {};
}

var wb = new Workbook();
var wsName = "SheetJS";
wb.SheetNames.push(wsName);
wb.Sheets[wsName] = getSheet(data);


module.exports = {
    dataset: [],
    getExcelFile: function (resultset, res) {

        /* write file */
        XLSX.writeFile(wb, 'test.xlsx');

        res.download('test.xlsx');
    }
};

【讨论】:

    猜你喜欢
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-18
    • 1970-01-01
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多