如何解决如何在自定义函数 officejs excel 加载项中处理日期格式
/*
* @customfunction
* @param {number} first
* @param {number} second
* @param {string} third
* @returns {number[][]}
*/
function GETDADOS(first,second,third) {
var promise = new Promise(function(resolve){
$.ajax({
...
//HTTP requisition
...
}
});
})
return promise.then(function(result){
var data = result
var resp = JSON.parse(data)
return resp
})
})
};
这为我提供了这个输出:
[[44225,1.8541],[44232,1.874],[44239,1.94]]
第一列是excel通用格式的日期。我怎样才能像每个用户的文化一样呈现这个日期?
前:美国 35062 -> 12/29/2021,英国 35062 -> 29/12/2021
我的尝试:
我尝试使用“Excel.range class”的“number format”属性,但问题是:我无法只获取自定义函数数据的范围。
...
return promise.then(function(result){
var data = result
var resp = JSON.parse(data)
return resp
}).then(function(){
format();
})
};
async function format() {
await Excel.run(async (context) => {
const sheet = context.workbook.worksheets.getActiveWorksheet();
const range = sheet.getUsedRange();
range.load('rowCount')
range.load('columnCount')
await context.sync().then(function (){
var formatopadrao = ["dd/mm/yy",null];
var matrizConfig = [];
for(var i = 0; i < range.rowCount; i++){
matrizConfig.push(formatopadrao);
}
range.numberFormat = matrizConfig;
console.log(matrizConfig);
});
});
}
Obs:getUsedRange() 不起作用,因为工作表有很多表格,我只需要格式化自定义函数数据。
开发环境:Windows 10、office 365 MSO (16.0.13929.20222) 64 位、Edge 版本 90.0.818.51 最新、Vs Code 与 Yeoman 生成器、Excel 桌面、共享运行时。
参考文献:
Setting the number format question
The ways to get a range with excel javascript API
解决方法
一旦设置了dd/mm/yy,那么无论哪个地区或国家,格式都被定义了,不能改变取决于文化。解除封锁的一种方法是在js中判断文化或国家,然后设置不同的格式要在该地区显示。
,要获取自定义函数数据,您可以注册 onCalculatedEvent,它可以在 onCalculatedEvent 触发时返回计算出的地址。
代码片段看起来像:
const sheet = context.workbook.worksheets.getActiveWorksheet();
eventResult = sheet.onCalculated.add(onCalculatedEvent);
async function onCalculatedEvent(eventArgs: Excel.WorksheetCalculatedEventArgs) {
await Excel.run(async (context) => {
const calculateType = eventArgs.type;
const calculateAddress = eventArgs.address;
console.log(`Calculation is at ${calculateAddress},type is ${calculateType})`);
});
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。