0

我可以在 JavaScript 中创建“双变量数据表”(又名“双向数据表”)吗?

当然,在 Excel 中,这可以在“数据”、“假设分析”、“数据表”菜单序列中找到。

4

1 回答 1

3

SpreadJS 的团队实现了一个 dataTable 函数,用于创建双向表: function dataTable(sheet, columnRange, rowRange, colInputCell, rowInputCell, formulaCell)

这是整个 dataTable 函数:

 function dataTable(sheet, columnRange, rowRange, colInputCell, rowInputCell, formulaCell) {
            var colRg = GC.Spread.Sheets.CalcEngine.formulaToRange(sheet, columnRange);
            var rowRg = GC.Spread.Sheets.CalcEngine.formulaToRange(sheet, rowRange);
            var colCell = GC.Spread.Sheets.CalcEngine.formulaToRange(sheet, colInputCell);
            var rowCell = GC.Spread.Sheets.CalcEngine.formulaToRange(sheet, rowInputCell);
            var fCell = GC.Spread.Sheets.CalcEngine.formulaToRange(sheet, formulaCell);

            for (var i=colRg.col; i<colRg.col + colRg.colCount; i++) {
                sheet.setValue(colCell.row, colCell.col, sheet.getValue(colRg.row, i));
                for (j=rowRg.row; j<rowRg.row + rowRg.rowCount; j++) {
                    sheet.setValue(rowCell.row, rowCell.col, sheet.getValue(j, rowRg.col));

                    var v = sheet.getValue(fCell.row, fCell.col);
                    sheet.setValue(j, i, v);
                }
            }
        }

以下是如何使用此函数创建数据表的示例:

function createDataTable() {
    var ss = GC.Spread.Sheets.findControl('ss');
    var sheet = ss.getActiveSheet();
    ss.suspendPaint();
    dataTable(sheet, 'G1:K1', 'F2:F6', 'B1', 'B2', 'B4');
    ss.resumePaint();
}

我是 GrapeCity 技术参与团队的成员。

于 2021-01-25T20:53:46.767 回答