我使用SheetJS库将我的角度材料数据表中的数据导出到excel。除了日期之外,一切都运行得很好,因为excel没有将日期格式化或检测为日期。
我有这样的JSON数据:
{
"id": 21658,
"lector_nombre": "Test",
"plataforma_codigo": "F10",
"plataforma_descripcion": "BLOQUE",
"created_at": "2020-02-27T16:53:32.7",
"fecha_ult_revision": "2020-02-25T00:00:00",
"pasos_ahora": 0,
"pasos_ciclo": 1000,
"pasos_ptes": 1000,
"ubicacion_1": "",
"ubicacion_2": "",
"estado": true,
"fecha_sig_revision": "2021-02-25T00:00:00",
"codigo_mantenimiento": null
}
如您所见,我有几个ISO 8601格式的日期和日期时间。
问题是日期是作为字符串导出到excel文件中的,因此它们没有格式化,用户无法将它们作为正确的日期使用:
下面是我管理导出过程的代码:
import { Injectable } from '@angular/core';
import * as FileSaver from 'file-saver';
import * as XLSX from 'xlsx';
@Injectable({
providedIn: 'root'
})
export class ExportxlsService {
fileType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';
fileExtension = '.xlsx';
constructor() {}
public exportExcel(jsonData: any[], fileName: string): void {
console.log(JSON.stringify(jsonData, null, 2));
const ws: XLSX.WorkSheet = XLSX.utils.json_to_sheet(jsonData, { cellDates: true, dateNF: 'YYYYMMDD HH:mm:ss' });
const wb: XLSX.WorkBook = { Sheets: { data: ws }, SheetNames: ['data'] };
const excelBuffer: any = XLSX.write(wb, { bookType: 'xlsx', type: 'array' });
this.saveExcelFile(excelBuffer, fileName);
}
private saveExcelFile(buffer: any, fileName: string): void {
const data: Blob = new Blob([buffer], { type: this.fileType });
FileSaver.saveAs(data, fileName + this.fileExtension);
}
}
发布于 2020-09-22 16:05:36
您需要将date设置为Date对象。
我刚刚包装了ISO字符串,一个新的日期构造函数。
{
"id": 21658,
"lector_nombre": "Test",
"plataforma_codigo": "F10",
"plataforma_descripcion": "BLOQUE",
"created_at": new Date("2020-02-27T16:53:32.7"),
"fecha_ult_revision": "2020-02-25T00:00:00",
"pasos_ahora": 0,
"pasos_ciclo": 1000,
"pasos_ptes": 1000,
"ubicacion_1": "",
"ubicacion_2": "",
"estado": true,
"fecha_sig_revision": "2021-02-25T00:00:00",
"codigo_mantenimiento": null
}
https://stackoverflow.com/questions/60450287
复制