Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import {Injectable} from '@angular/core';
- import * as FileSaver from 'file-saver';
- import * as XLSX from 'xlsx';
- import {AuthService} from './auth.service';
- import {UserService} from './user/user.service';
- import {User} from '../models/user';
- const EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';
- const EXCEL_EXTENSION = '.xlsx';
- @Injectable()
- export class ExcelService {
- currentUser: User;
- constructor(private userService: UserService, private authService: AuthService) {
- this.currentUser = this.authService.currentUserValue;
- }
- public exportAsExcelFile(basic, profession, team, project, elective, excelFileName: string) {
- const worksheetBasic: XLSX.WorkSheet = XLSX.utils.json_to_sheet(basic);
- worksheetBasic.cellStyles = true;
- const wscols1 = [{hidden: true}, {hidden: true}, {wpx: 150}, {wpx: 75}];
- worksheetBasic['!cols'] = wscols1;
- /* worksheetBasic.B1.v = 'Perusopinnot';*/
- worksheetBasic.C1.v = 'Kurssi';
- worksheetBasic.D1.v = 'Opintopisteet';
- worksheetBasic.E1.v = '';
- const worksheetProfession: XLSX.WorkSheet = XLSX.utils.json_to_sheet(profession);
- const wscols2 = [{hidden: true}, {hidden: true}, {wpx: 100}, {wpx: 75}, {wpx: 75}, {wpx: 75}, {wpx: 75}];
- worksheetProfession['!cols'] = wscols2;
- /*worksheetProfession.B1.v = 'Ammattiopinnot';*/
- worksheetProfession.C1.v = 'Kirja/aihe';
- worksheetProfession.D1.v = 'Teema';
- worksheetProfession.E1.v = 'Kirjapisteet';
- worksheetProfession.F1.v = 'Seminaaripisteet';
- worksheetProfession.G1.v = 'Opintopisteet';
- worksheetProfession.H1.v = '';
- const worksheetTeam: XLSX.WorkSheet = XLSX.utils.json_to_sheet(team);
- const wscols3 = [{hidden: true}, {hidden: true}, {wpx: 65}, {wpx: 75}, {wpx: 50}, {wpx: 100}];
- worksheetTeam['!cols'] = wscols3;
- /*worksheetTeam.B1.v = 'Tiimityöskentely';*/
- worksheetTeam.C1.v = 'Päivämäärä';
- worksheetTeam.D1.v = 'Työtapa';
- worksheetTeam.E1.v = 'Tunnit';
- worksheetTeam.F1.v = 'Lisätiedot';
- worksheetTeam.G1.v = '';
- const worksheetProject: XLSX.WorkSheet = XLSX.utils.json_to_sheet(project);
- const wscols4 = [{hidden: true}, {hidden: true}, {wpx: 65}, {wpx: 75}, {wpx: 50}, {wpx: 50}, {wpx: 75}];
- worksheetProject['!cols'] = wscols4;
- /*worksheetProject.B1.v = 'Projektit';*/
- worksheetProject.C1.v = 'Päivämäärä';
- worksheetProject.D1.v = 'Projekti/tilaaja';
- worksheetProject.E1.v = 'Tunniste';
- worksheetProject.F1.v = 'Tunnit';
- worksheetProject.G1.v = 'Työtehtävät';
- worksheetProject.H1.v = '';
- const worksheetElective: XLSX.WorkSheet = XLSX.utils.json_to_sheet(elective);
- const wscols5 = [{hidden: true}, {hidden: true}, {wpx: 150}, {wpx: 75}];
- worksheetElective['!cols'] = wscols5;
- /*worksheetElective.B1.v = 'Vapaasti valittavat';*/
- worksheetElective.C1.v = 'Kurssi';
- worksheetElective.D1.v = 'Opintopisteet';
- worksheetElective.E1.v = '';
- const workbook: XLSX.WorkBook = {
- Sheets: {
- Perusopinnot: worksheetBasic, Ammattiopinnot: worksheetProfession, Tiimitoiminta: worksheetTeam,
- Projektit: worksheetProject, VapaastiValittavat: worksheetElective
- },
- SheetNames: ['Perusopinnot', 'Ammattiopinnot', 'Tiimitoiminta', 'Projektit', 'VapaastiValittavat']
- };
- const excelBuffer: any = XLSX.write(workbook, {bookType: 'xlsx', type: 'array'});
- this.saveAsExcelFile(excelBuffer, excelFileName);
- }
- public getUser() {
- this.userService.getUserById(this.currentUser.id).pipe().subscribe(user => {
- this.currentUser = user;
- });
- }
- private saveAsExcelFile(buffer: any, fileName: string): void {
- this.getUser();
- const date = new Date();
- const data: Blob = new Blob([buffer], {type: EXCEL_TYPE});
- FileSaver.saveAs(data, this.currentUser.email + '_' + fileName + '_' + date.getDate() + '.' + (date.getMonth() + 1)
- + '.' + date.getFullYear() + EXCEL_EXTENSION);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement