首页 > 解决方案 > 将 xlsx 转换为 json 时更改日期格式

问题描述

我正在尝试从 xlsx 文件中读取数据并将其转换为 json,但日期列值正在更改这是屏幕截图:我正在从中读取数据的 excel 文件的屏幕截图

下面是从 excel 文件中读取数据并转换为 JSON 的代码:

onBasicUpload(event){
let workBook = null;
let jsonData = null;
const reader = new FileReader();
const file = event.files[0];
console.log(file,"file is here");

reader.onload = (event) => {
  const data = reader.result;
  workBook = xlsx.read(data, { type: 'binary' });
  jsonData = workBook.SheetNames.reduce((initial, name) => {
    const sheet = workBook.Sheets[name];
    initial[name] = xlsx.utils.sheet_to_json(sheet);
    console.log(jsonData,"jsonDAta");
    
    return initial;
  }, {});
  const dataString = JSON.stringify(jsonData);
  console.log(dataString,"stringify data");
  this.jsonArr = JSON.parse(dataString)
  console.log(this.jsonArr,"parsed json");
  console.log(Object.keys(this.jsonArr['data'][0]))
  
}
reader.readAsBinaryString(file);
}

它返回给我:DOCDT 是返回日期的值。 {"数据":[{"DOCNO":"001","NETAMOUNT":30000,"IREF1":"50","IREF2":"100","DOCDT":43989},{"DOCNO":2 ,"NETAMOUNT":40000,"IREF1":40,"IREF2":90,"DOCDT":43989}]}

标签: javascriptjsonangularprimeng

解决方案


试试用这个,

onBasicUpload(event){
let workBook = null;
let jsonData = null;
const reader = new FileReader();
const file = event.files[0];
console.log(file,"file is here");

reader.onload = (event) => {
  const data = reader.result;
  workBook = xlsx.read(data, { type: 'binary' , cellDates: true });
  jsonData = workBook.SheetNames.reduce((initial, name) => {
    const sheet = workBook.Sheets[name];
    initial[name] = xlsx.utils.sheet_to_json(sheet);
    console.log(jsonData,"jsonDAta");
    
    return initial;
  }, {});
  const dataString = JSON.stringify(jsonData);
  console.log(dataString,"stringify data");
  this.jsonArr = JSON.parse(dataString)
  console.log(this.jsonArr,"parsed json");
  console.log(Object.keys(this.jsonArr['data'][0]))
  
}
reader.readAsBinaryString(file);
}

推荐阅读