Я использую библиотеку Sheet JS для экспорта данных в моей базе данных материалов angular, чтобы преуспеть. Все работает нормально, за исключением дат, которые не форматируются и не определяются как даты в Excel.
У меня есть JSON данные, подобные этим:
{
"id": 21658,
"lector_nombre": "Hot 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
}
У меня есть несколько дат и Datetime в формате 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);
}
}