Bonjour,

Voila je rencontre un petit problème avec mon code.
Je veux afficher le contenu d'une page Excel et emploie XLSX pour cela.
Quand le tableau s'affiche, j'ai mes 3 colonnes mais la date s'affiche sous forme de nombre.

import { Component, OnInit } from '@angular/core';
import  * as XLSX from 'xlsx';

@Component({
  selector: 'app-excelsheet',
  templateUrl: './excelsheet.component.html',
  styleUrls: ['./excelsheet.component.css']
})
export class ExcelsheetComponent implements OnInit {

  data: [][];
  constructor() { }

  ngOnInit(): void {
  }

  onFileChange(evt: any) {
    const target : DataTransfer = <DataTransfer>(evt.target);

    if (target.files.length !== 1) throw new Error('Cannot use multiple files');

    const reader: FileReader = new FileReader();

    reader.onload = (e: any) => {
      const bstr: string = e.target.result;

      const wb: XLSX.WorkBook = XLSX.read(bstr, {type: 'binary' });

      const wsname: string = wb.SheetNames[1];

      const ws: XLSX.WorkSheet = wb.Sheets[wsname];

      console.log(ws);

      this.data = (XLSX.utils.sheet_to_json(ws, {header: 1}));

      console.log(this.data);
    };

    reader.readAsBinaryString(target.files[0]);
  }

}

Je voudrais afficher la colonne des dates sous format date (jj/mm/yy)

Les dates s'affichent sous forme d'un entier et pas sous la forme d'une Date.

Name Salary Date de naissance
Morgan 50000 29221
Romain 50000 29983
Julien 60000 31472
Olivier 32000 31621

Savez vous comment je peux afficher sous la bonne forme la dernière colonne?
Merci

5 réponses


oui, tu peux utiliser momentjs, ca te permetra de transformer la date dans le format que tu veux et sous forme de string

Hello Defy, je pensais avoir répondu. Merci du conseil.
J'ai regardé et je n'arrive pas à utiliser momentjs correctement.

c'est a dire?

Je viens à peine de me mettre à Angular et j'avais suivi un tuto (https://www.youtube.com/watch?v=qjuJRYm68mw) pour importer les data d'Excel dont la colonne des dates et lorsque j'essaie de voir où et quelle fonction de moment js implémenter, je me perds.
Je pensais que je devais utiliser la syntaxe mustache (et les pipes) mais apparement, ce n'est pas la bonne méthode.

Je te remercie en tout cas. J'apprends même en échouant :p

Si tu peux utiliser moment dans ton template il faut juste le déclarer en propriété dans ton composant genre dans le controller tu fait

import * as moment from 'moment';

... ton code de composant

public moment = moment

.. ton code de composant

et dans ton template du coup tu a acces a moment comme ça

<div>{{moment(valeur).format('DD mm yy')}}</div>