Dashboard sipadu mbip
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ExportCSV.js 2.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import React from 'react'
  2. import * as FileSaver from 'file-saver';
  3. import * as XLSX from 'xlsx';
  4. export const ExportCSV = ({csvData, fileName, type}) => {
  5. const fileType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';
  6. const fileExtension = '.xlsx';
  7. const exportToCSV = (csvData, fileName, type) => {
  8. let finalData = [];
  9. if(type == 'Parkir'){
  10. csvData.map((item,i) => {
  11. finalData.push({
  12. No : i,
  13. Kpd : item.kpd,
  14. Jenis: item.jenis,
  15. Tarikh_Masa: item.tarikh_masa,
  16. Kesalahan: 'Seksyen' + item.kesalahan.sketr +' '+ item.kesalahan.nama,
  17. Kadar_Kompaun : item.jumlah_kemaskini_kompaun !== "" ? item.jumlah_kemaskini_kompaun : item.jumlah_asal_kompaun,
  18. No_Plat: item.no_plate,
  19. Penguatkuasa: item.enforcer.no_badan +', ' +item.enforcer.full_name,
  20. Status: item.status,
  21. })
  22. })
  23. }else if(type == 'Pelbagai'){
  24. csvData.map((item,i) => {
  25. finalData.push({
  26. No : i,
  27. Kpd : item.kpd,
  28. Jenis: item.jenis,
  29. Tarikh_Masa: item.tarikh_masa,
  30. Kesalahan: 'Seksyen' + item.kesalahan.sketr +' '+ item.kesalahan.nama,
  31. Kadar_Kompaun : item.jumlah_kemaskini_kompaun !== "" ? item.jumlah_kemaskini_kompaun : item.jumlah_asal_kompaun,
  32. Nric: item.nric,
  33. No_Daftar_syarikat: item.no_daftar_syarikat,
  34. Penguatkuasa: item.enforcer.no_badan +', ' +item.enforcer.full_name,
  35. Status: item.status,
  36. })
  37. })
  38. }
  39. const ws = XLSX.utils.json_to_sheet(finalData);
  40. const wb = { Sheets: { 'data': ws }, SheetNames: ['data'] };
  41. const excelBuffer = XLSX.write(wb, { bookType: 'xlsx', type: 'array' });
  42. const data = new Blob([excelBuffer], {type: fileType});
  43. FileSaver.saveAs(data, fileName + fileExtension);
  44. }
  45. return (
  46. <button onClick={(e) => exportToCSV(csvData,fileName,type)} className="btn btn-success btn-sm waves-effect waves-light f-right">
  47. Eksport ke CSV
  48. </button>
  49. )
  50. }