Add table csv export
parent
c8742dd9ea
commit
65f4a026ab
@ -1,32 +1,63 @@
|
||||
import { Injectable } from "@angular/core";
|
||||
import { Injectable } from '@angular/core';
|
||||
import * as FileSaver from 'file-saver';
|
||||
|
||||
const EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';
|
||||
const EXCEL_TYPE =
|
||||
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';
|
||||
const JSON_TYPE = 'data:text/json;charset=UTF-8';
|
||||
const CSV_TYPE = 'text/csv;charset=utf-8';
|
||||
|
||||
const EXCEL_EXTENSION = '.xlsx';
|
||||
const JSON_EXTENSION = '.json';
|
||||
const CSV_EXTENSION = '.csv';
|
||||
|
||||
|
||||
@Injectable({ providedIn: "root" })
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class DownloadService {
|
||||
csvChar: string = ";";
|
||||
csvChar: string = ';';
|
||||
|
||||
public saveTableDataAsCSV(tableData: any, columnInfo: any, fileName: string) {
|
||||
const csvData = [];
|
||||
const header = columnInfo
|
||||
.map((column) => column.translation)
|
||||
.join(this.csvChar);
|
||||
csvData.push(header);
|
||||
for (const row of tableData) {
|
||||
const newRow = columnInfo.map((column) => {
|
||||
let cellData = row[column.dataPath];
|
||||
if (Array.isArray(cellData)) {
|
||||
cellData = cellData.join(', ');
|
||||
} else if (column.type === 'NumRange') {
|
||||
cellData = (row[column.dataPath + ".min"] || '') + " bis " + (row[column.dataPath + ".max"] || '');
|
||||
} else if (column.type === 'DateRange') {
|
||||
cellData = (row[column.dataPath + ".from"] || '') + " bis " + (row[column.dataPath + ".to"] || '');
|
||||
}
|
||||
return JSON.stringify(cellData || '');
|
||||
});
|
||||
csvData.push(newRow.join(this.csvChar));
|
||||
}
|
||||
const BOM = '\uFEFF';
|
||||
const csv = BOM + csvData.join('\r\n');
|
||||
const blob = new Blob([csv], { type: CSV_TYPE });
|
||||
FileSaver.saveAs(
|
||||
blob,
|
||||
fileName + '_export_' + new Date().toLocaleString() + CSV_EXTENSION
|
||||
);
|
||||
}
|
||||
|
||||
/*public exportAsExcelFile(json: any[], excelFileName: string, sheetName: string): void {
|
||||
const worksheet: XLSX.WorkSheet = XLSX.utils.json_to_sheet(json);
|
||||
const workbook: XLSX.WorkBook = { Sheets: { [sheetName] : worksheet }, SheetNames: [sheetName] };
|
||||
const excelBuffer: any = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });
|
||||
this.saveAsExcelFile(excelBuffer, excelFileName);
|
||||
}*/
|
||||
|
||||
private saveAsExcelFile(buffer: any, fileName: string): void {
|
||||
const data: Blob = new Blob([buffer], {type: EXCEL_TYPE});
|
||||
FileSaver.saveAs(data, fileName + '_export_' + new Date().getTime() + EXCEL_EXTENSION);
|
||||
const data: Blob = new Blob([buffer], { type: EXCEL_TYPE });
|
||||
FileSaver.saveAs(
|
||||
data,
|
||||
fileName + '_export_' + new Date().getTime() + EXCEL_EXTENSION
|
||||
);
|
||||
}
|
||||
|
||||
public exportJSONFile(json: any, fileName: string){
|
||||
const data: Blob = new Blob([JSON.stringify(json, null, 2)], {type: JSON_TYPE});
|
||||
FileSaver.saveAs(data, fileName + '_export_' + new Date().getTime() + JSON_EXTENSION);
|
||||
public exportJSONFile(json: any, fileName: string) {
|
||||
const data: Blob = new Blob([JSON.stringify(json, null, 2)], {
|
||||
type: JSON_TYPE,
|
||||
});
|
||||
FileSaver.saveAs(
|
||||
data,
|
||||
fileName + '_export_' + new Date().getTime() + JSON_EXTENSION
|
||||
);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue