首页 文章

Excel Javascript API - 添加具有“类别轴”值的图表

提问于
浏览
1

我正在添加\通过以下JS调用将一个折线图插入Excel:

var newSheet = ctx.workbook.worksheets.add();
    newSheet.activate();

    // populate grid
    // category (axis)
    var cell = newSheet.getCell(0, 0)
    ...

    // values (axis)
    cell = newSheet.getCell(0, 1)
    ...

    var range = newSheet.getUsedRange();
    newSheet.charts.add("Line", range);

我的“范围”数据如下所示:

2012  10
2013  20
2014  30
2015  40
2016  50

我遇到的问题是每列被视为一个单独的系列,并在图表中呈现2行 . 我只想要一行和Category Axis来包含年份 . 有谁知道这是否可能?

截图:

Example

1 回答

  • 2

    克里斯,

    用于创建图表的Excel当前JavaScript API无法让您更好地控制Excel应如何构建图表的系列和轴 . 当使用ChartCollection.add()方法时,您依赖于Excel推荐图表算法的"smarts",并且在这种特殊情况下,由于第一个答案不是您所期望的,因此回答它 .

    我们的API积压中有一个项目,可以为类似于其他Excel API的图表提供更细粒度的控制 . 目前我无法说明API何时可以使用 . 我鼓励您关注我们的open specification process以获得提升,并有机会对我们的设计提供反馈 .

    作为特定情况的解决方法,我建议您尝试使用第一列的日期值而不是数字 . 您可以格式化列以仅显示日期的年份部分:

    async function run() {
    try {
        await Excel.run(async (context) => {
            var sheet = context.workbook.worksheets.getActiveWorksheet();
    
            let data = [
                ["Year", "Measure"],
                ["2010-12-31", 10],
                ["2011-12-31", 20], 
                ["2012-12-31", 30], 
                ["2013-12-31", 40],
                ["2014-12-31", 50],
            ];
            let format = [
                ["@"],
                ["yyyy"],
                ["yyyy"],
                ["yyyy"],
                ["yyyy"],
                ["yyyy"]
            ];
    
            let categories = sheet.getRange("A1:A6");
            categories.numberFormat = format;
            var range = sheet.getRange("A1:B6");
            range.values = data;
    
            sheet.charts.add(Excel.ChartType.line, range, Excel.ChartSeriesBy.columns);
    
            await context.sync();
        });
    }
    catch (error) {
        OfficeHelpers.Utilities.log(error);
    }
    

    }

    此代码段使用async / await以TypeScript编写,但很容易转换为JavaScript .

    enter image description here

    雅各布

相关问题