Javascript 获取数据时在excel中保存日期格式
我们有一个使用office.js构建的excel外接程序。我们从数据范围(即A1:C10)中读取数据,该数据范围可能由日期列组成。请参考下图 我们的外接程序读取数据并形成一个CSV数据集,当用户单击下载按钮时,该数据集将被下载。我们使用以下代码行读取数据Javascript 获取数据时在excel中保存日期格式,javascript,excel,office-js,office-js-helpers,excel-dates,Javascript,Excel,Office Js,Office Js Helpers,Excel Dates,我们有一个使用office.js构建的excel外接程序。我们从数据范围(即A1:C10)中读取数据,该数据范围可能由日期列组成。请参考下图 我们的外接程序读取数据并形成一个CSV数据集,当用户单击下载按钮时,该数据集将被下载。我们使用以下代码行读取数据 Excel.run({ delayForCellEdit: true }, async context => { this.rangeInput.nativeElement.blur(); let sheet; s
Excel.run({ delayForCellEdit: true }, async context => {
this.rangeInput.nativeElement.blur();
let sheet;
sheet = context.workbook.worksheets.getItem("Sheet1");
let range = sheet.getRange("A1:D10");
range.load("values");
range.load("numberFormat");
this.isDataLoading = true;
this.updateLoading();
await context.sync();
let rangeData = range.values;
let dataFormat = range.numberFormat;
})
在上面的代码中,我们通过加载范围的数字格式(即range.load(“numberFormat”)来获取每个单元格的数据格式
返回一个格式数组。我们使用此格式数组来决定我们的选择中是否有日期。主要的挑战是excel支持很多日期格式,并且我们分别为每个模式实现日期转换逻辑。我们是否有任何通用方法将excel序列转换为任何支持的格式(即270个位置的所有格式)excel中的日期模式
要签出excel中支持的模式,请尝试通过格式化单元格来选择不同的模式。(即右键单击单元格->格式化单元格->日期,然后更改格式)
我们确实尝试了将日期转换为ISO格式,但我们希望日期的格式与用户在excel中的格式相同(即2020年4月8日星期三,我们从excel序列转换日期时应相同)
excel序列示例-“2011年8月22日是excel中的40777”。请理解excel序列谢谢Naveen提出的问题,我们实际上正在为此场景构建一个新的API。该API现在处于beta预览中。该API的目标是在1.12版本中发布,该版本将于今年秋天正式发布 API
range.numberFormatCategories
,表示范围内每个单元格的数字格式类别。它将以
以下是此API的示例代码
await Excel.run(async (context) => {
const sheet = context.workbook.worksheets.getActiveWorksheet();
sheet.activate();
let range = sheet.getRange("A1:C3");
range.load("address");
range.load("numberFormatCategories");
await context.sync();
console.log("address: " + range.address);
console.log("NumberFormatCategory: " + range.numberFormatCategories);
});
这是文件
您可以在Windows和Excel online中尝试这一要点。谢谢Raymond。当API发布时,它将非常有用。我们计划在Ignite会议上为该API添加GA