我在Angular 7中使用https://github.com/SheetJS/js-xlsx/来导入excel文件并进行一些处理,然后再将其发送到服务器。我读取Excel数据的功能是:
private readFile(file: any, dataType: string) {
let fileReader: FileReader = new FileReader();
fileReader.onload = (e) => {
this.arrayBuffer = fileReader.result;
let data = new Uint8Array(this.arrayBuffer);
let arr = new Array();
for (let i = 0; i !== data.length; ++i) { arr[i] = String.fromCharCode(data[i]); }
let bstr = arr.join('');
let workbook = XLSX.read(bstr, {type: 'binary', cellDates: true});
let firstSheetName = workbook.SheetNames[0];
let worksheet = workbook.Sheets[firstSheetName];
let jsonData = XLSX.utils.sheet_to_json(worksheet);
this.mapExcelModal.show(jsonData);
};
fileReader.readAsArrayBuffer(file);
}
如果在不同时区中读取包含日期的数据,我会遇到问题。例如,我在Excel文件中将数据输入为28/02/2019,并将该日期读取为Wed Feb 27 2019 23:59:20 GMT+0200 (Israel Standard Time)
。
如果尝试从本地计算机导入它,则会得到Thu Feb 28 2019 00:00:00 GMT+0100 (Central European Standard Time)
。无论时区如何,我都只需要阅读日期,就需要将其解析为2019-02-28T00:00:00Z
格式。我使用momentjs进行格式化。我不明白为什么它会读取日期作为前一天,以及如何处理它以便时区不影响日期?有什么建议吗?