gpt4 book ai didi

office365-apps - 如何在 excel 插件 office.js 中处理日期类型

转载 作者:行者123 更新时间:2023-12-04 06:39:16 26 4
gpt4 key购买 nike

我有一个基于任务 Pane 的 Excel 加载项,使用 office.js 开发。我在excel中的一个单元格上复制了一个日期,然后下次从该单元格中读取它。基本上我使用 javascript Date 对象将读取的字符串从 excel 转换为日期,然后使用它。

我认为当 excel 文件以英语文化保存并在具有法国文化的机器上打开时,这种方法会产生问题。因为日期的格式在两种文化中都不同。

我想知道如何处理这种情况。有什么办法可以说Excel中的单元格是日期类型。然后在不同的文化中相应地调整其值。

最佳答案

如果单元格的值类型是日期,当我们从该文本中获取值时,我们将在 UI 上获得一个数字而不是文本显示。

该数字表示自 1900-Jan-0 以来的天数,加上一天 24 小时的小数部分: ddddd.tttttt 。这称为序列日期或序列日期时间。引用 here关于 Excel 中的日期和时间。然而,JavaScript 中的日期从 1970 年 1 月 1 日 UTC 开始(引用 Date in JavaScript)。

我们需要在 JavaScript 中将数字转换为我们想要的日期时间。 Excel 在将日期时间转换为值时不计算时区。

这是一个将 Excel 中的日期值转换为 UTC 的演示,供您引用:

function getJsDateFromExcel(excelDateValue) {

return new Date((excelDateValue- (25567+2 )) * 86400 * 1000);
}

Excel 中的日期: 6/14/2016 12:00:00 PM
日期值: 42535.5
在 JavaScript 中将值转换为日期: getJsDateFromExcel(42535.5).toUTCString()
结果:
“2016 年 6 月 14 日,星期二,格林威治标准时间 12:00:00”

更新

你的代码中的日期格式是什么?我们需要指定 Excel 可以识别的正确格式。设置值后,如果日期被识别为字符串,它将左对齐而不是如下图所示:
enter image description here

这是设置/获取日期的代码:
function setData() {
Excel.run(function (ctx) {
var sheetName = "Sheet1";
var rangeAddress = "A1";
var range = ctx.workbook.worksheets.getItem(sheetName).getRange(rangeAddress);
range.load("values");
return ctx.sync().then(function () {
range.values = "6/15/2016 13:00:00";
});
}).catch(function (error) {
console.log("Error: " + error);
if (error instanceof OfficeExtension.Error) {
console.log("Debug info: " + JSON.stringify(error.debugInfo));
}
});
}

function getData() {
Excel.run(function (ctx) {
var sheetName = "Sheet1";
var rangeAddress = "A1";
var range = ctx.workbook.worksheets.getItem(sheetName).getRange(rangeAddress);
range.load("values");
return ctx.sync().then(function () {

var d = getJsDateFromExcel(range.values[0])
var strD = d.toUTCString();
});
}).catch(function (error) {
console.log("Error: " + error);
if (error instanceof OfficeExtension.Error) {
console.log("Debug info: " + JSON.stringify(error.debugInfo));
}
});
}

获取数据的结果:
enter image description here

关于office365-apps - 如何在 excel 插件 office.js 中处理日期类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37803568/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com