Advertisement
Guest User

Untitled

a guest
Jan 20th, 2020
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.97 KB | None | 0 0
  1. import {Injectable} from '@angular/core';
  2. import * as FileSaver from 'file-saver';
  3. import * as XLSX from 'xlsx';
  4. import {AuthService} from './auth.service';
  5. import {UserService} from './user/user.service';
  6. import {User} from '../models/user';
  7.  
  8. const EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';
  9. const EXCEL_EXTENSION = '.xlsx';
  10.  
  11. @Injectable()
  12. export class ExcelService {
  13. currentUser: User;
  14.  
  15. constructor(private userService: UserService, private authService: AuthService) {
  16. this.currentUser = this.authService.currentUserValue;
  17. }
  18.  
  19. public exportAsExcelFile(basic, profession, team, project, elective, excelFileName: string) {
  20. const worksheetBasic: XLSX.WorkSheet = XLSX.utils.json_to_sheet(basic);
  21. worksheetBasic.cellStyles = true;
  22. const wscols1 = [{hidden: true}, {hidden: true}, {wpx: 150}, {wpx: 75}];
  23. worksheetBasic['!cols'] = wscols1;
  24. /* worksheetBasic.B1.v = 'Perusopinnot';*/
  25. worksheetBasic.C1.v = 'Kurssi';
  26. worksheetBasic.D1.v = 'Opintopisteet';
  27. worksheetBasic.E1.v = '';
  28. const worksheetProfession: XLSX.WorkSheet = XLSX.utils.json_to_sheet(profession);
  29. const wscols2 = [{hidden: true}, {hidden: true}, {wpx: 100}, {wpx: 75}, {wpx: 75}, {wpx: 75}, {wpx: 75}];
  30. worksheetProfession['!cols'] = wscols2;
  31. /*worksheetProfession.B1.v = 'Ammattiopinnot';*/
  32. worksheetProfession.C1.v = 'Kirja/aihe';
  33. worksheetProfession.D1.v = 'Teema';
  34. worksheetProfession.E1.v = 'Kirjapisteet';
  35. worksheetProfession.F1.v = 'Seminaaripisteet';
  36. worksheetProfession.G1.v = 'Opintopisteet';
  37. worksheetProfession.H1.v = '';
  38. const worksheetTeam: XLSX.WorkSheet = XLSX.utils.json_to_sheet(team);
  39. const wscols3 = [{hidden: true}, {hidden: true}, {wpx: 65}, {wpx: 75}, {wpx: 50}, {wpx: 100}];
  40. worksheetTeam['!cols'] = wscols3;
  41. /*worksheetTeam.B1.v = 'Tiimityöskentely';*/
  42. worksheetTeam.C1.v = 'Päivämäärä';
  43. worksheetTeam.D1.v = 'Työtapa';
  44. worksheetTeam.E1.v = 'Tunnit';
  45. worksheetTeam.F1.v = 'Lisätiedot';
  46. worksheetTeam.G1.v = '';
  47. const worksheetProject: XLSX.WorkSheet = XLSX.utils.json_to_sheet(project);
  48. const wscols4 = [{hidden: true}, {hidden: true}, {wpx: 65}, {wpx: 75}, {wpx: 50}, {wpx: 50}, {wpx: 75}];
  49. worksheetProject['!cols'] = wscols4;
  50. /*worksheetProject.B1.v = 'Projektit';*/
  51. worksheetProject.C1.v = 'Päivämäärä';
  52. worksheetProject.D1.v = 'Projekti/tilaaja';
  53. worksheetProject.E1.v = 'Tunniste';
  54. worksheetProject.F1.v = 'Tunnit';
  55. worksheetProject.G1.v = 'Työtehtävät';
  56. worksheetProject.H1.v = '';
  57. const worksheetElective: XLSX.WorkSheet = XLSX.utils.json_to_sheet(elective);
  58. const wscols5 = [{hidden: true}, {hidden: true}, {wpx: 150}, {wpx: 75}];
  59. worksheetElective['!cols'] = wscols5;
  60. /*worksheetElective.B1.v = 'Vapaasti valittavat';*/
  61. worksheetElective.C1.v = 'Kurssi';
  62. worksheetElective.D1.v = 'Opintopisteet';
  63. worksheetElective.E1.v = '';
  64. const workbook: XLSX.WorkBook = {
  65. Sheets: {
  66. Perusopinnot: worksheetBasic, Ammattiopinnot: worksheetProfession, Tiimitoiminta: worksheetTeam,
  67. Projektit: worksheetProject, VapaastiValittavat: worksheetElective
  68. },
  69. SheetNames: ['Perusopinnot', 'Ammattiopinnot', 'Tiimitoiminta', 'Projektit', 'VapaastiValittavat']
  70. };
  71. const excelBuffer: any = XLSX.write(workbook, {bookType: 'xlsx', type: 'array'});
  72. this.saveAsExcelFile(excelBuffer, excelFileName);
  73. }
  74.  
  75. public getUser() {
  76. this.userService.getUserById(this.currentUser.id).pipe().subscribe(user => {
  77. this.currentUser = user;
  78. });
  79. }
  80.  
  81. private saveAsExcelFile(buffer: any, fileName: string): void {
  82. this.getUser();
  83. const date = new Date();
  84. const data: Blob = new Blob([buffer], {type: EXCEL_TYPE});
  85. FileSaver.saveAs(data, this.currentUser.email + '_' + fileName + '_' + date.getDate() + '.' + (date.getMonth() + 1)
  86. + '.' + date.getFullYear() + EXCEL_EXTENSION);
  87. }
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement