使用 Excel JavaScript API 和Moment-MSDate插件处理日期

本文提供代码示例,演示如何使用 Excel JavaScript API 和 Moment-MSDate 插件处理日期。 有关对象支持的属性和方法 Range 的完整列表,请参阅 Excel.Range 类

注意

The Excel JavaScript API 没有“Cell”对象或类。 相反,Excel JavaScript API 将所有 Excel 单元格定义为 Range 对象。 Excel UI 中的单个单元格转换为 Excel JavaScript API 中包含一个单元格的 Range 对象。 单个 Range 对象也可以包含多个连续的单元格。 若要了解详细信息,请参阅使用 Excel JavaScript API 处理单元格

使用Moment-MSDate插件处理日期

时刻 JavaScript 库提供了使用日期和时间戳的便捷方式。 Moment-MSDate 插件可将时刻格式转换为 Excel 所需的格式。 这是 NOW 函数返回的相同格式。

以下代码演示如何将 B4 处的范围设置为某个时刻的时间戳。

await Excel.run(async (context) => {
    let sheet = context.workbook.worksheets.getItem("Sample");

    let now = Date.now();
    let nowMoment = moment(now);
    let nowMS = nowMoment.toOADate();

    let dateRange = sheet.getRange("B4");
    dateRange.values = [[nowMS]];

    dateRange.numberFormat = [["[$-409]m/d/yy h:mm AM/PM;@"]];

    await context.sync();
});

下面的代码示例演示了一种类似的技术,可将日期从单元格中取回,并将其转换为 Moment 或其他格式。

await Excel.run(async (context) => {
    let sheet = context.workbook.worksheets.getItem("Sample");

    let dateRange = sheet.getRange("B4");
    dateRange.load("values");

    await context.sync();

    let nowMS = dateRange.values[0][0];

    // Log the date as a moment.
    let nowMoment = moment.fromOADate(nowMS);
    console.log(`get (moment): ${JSON.stringify(nowMoment)}`);

    // Log the date as a UNIX-style timestamp.
    let now = nowMoment.unix();
    console.log(`get (timestamp): ${now}`);
});

外接程序必须设置区域的格式,以更易读的形式显示日期。 例如, "[$-409]m/d/yy h:mm AM/PM;@" 显示“12/3/18 3:57 PM”。 有关日期和时间号格式的详细信息,请参阅 查看自定义数字格式指南一 文中的“日期和时间格式指南”。

另请参阅