@angel199/exporter 0.0.7 → 0.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -63,11 +63,22 @@ class ExportService {
|
|
|
63
63
|
FileSaver.saveAs(blob, `${fileName}.xlsx`);
|
|
64
64
|
});
|
|
65
65
|
}
|
|
66
|
-
|
|
66
|
+
exportPdf(data, headers, fileName) {
|
|
67
67
|
const doc = new jsPDF();
|
|
68
|
+
const rows = data.map(obj => headers.map(h => obj[h] ?? ''));
|
|
68
69
|
autoTable(doc, {
|
|
69
70
|
head: [headers],
|
|
70
|
-
body:
|
|
71
|
+
body: rows,
|
|
72
|
+
theme: 'grid',
|
|
73
|
+
startY: 20,
|
|
74
|
+
styles: {
|
|
75
|
+
fontSize: 9
|
|
76
|
+
},
|
|
77
|
+
headStyles: {
|
|
78
|
+
fillColor: [41, 128, 185],
|
|
79
|
+
textColor: 255,
|
|
80
|
+
fontStyle: 'bold'
|
|
81
|
+
}
|
|
71
82
|
});
|
|
72
83
|
doc.save(`${fileName}.pdf`);
|
|
73
84
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angel199-exporter.mjs","sources":["../../../projects/exporter/src/lib/exporter.ts","../../../projects/exporter/src/lib/exporter.service.ts","../../../projects/exporter/src/public-api.ts","../../../projects/exporter/src/angel199-exporter.ts"],"sourcesContent":["import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-exporter',\r\n imports: [],\r\n template: ``,\r\n styles: ``,\r\n})\r\nexport class Exporter {\r\n\r\n}\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { MessageService } from 'primeng/api'; // uso diretto della libreria\r\n\r\nimport jsPDF from 'jspdf';\r\nimport autoTable from 'jspdf-autotable';\r\nimport * as FileSaver from 'file-saver';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExportService {\r\n \r\n\r\n constructor(private messagesService:MessageService){}\r\n\r\n // esempio metodo notifiche\r\n private notify(message: string) {\r\n this.messagesService.add({ severity: 'info', summary: 'Export', detail: message });\r\n }\r\n\r\n exportDataTable(\r\n data: any[],\r\n allColumns: any[],\r\n format: 'PDF' | 'XLSX',\r\n fileName: string\r\n ) {\r\n\r\n const fieldsToKeep = allColumns.map(col => col.field);\r\n const headers = allColumns.map(col => col.header);\r\n\r\n const filteredArray = data.map(item => {\r\n const result: any = {};\r\n\r\n fieldsToKeep.forEach(field => {\r\n const column = allColumns.find(c => c.field === field);\r\n if (column && item[field] !== undefined) {\r\n result[column.header] = item[field];\r\n }\r\n });\r\n\r\n return result;\r\n });\r\n\r\n this.notify(\"Attendere, il report è in fase di caricamento.\");\r\n\r\n if (format === 'XLSX') {\r\n this.exportExcel(filteredArray, headers, fileName);\r\n } else {\r\n this.exportPdf(filteredArray, headers, fileName);\r\n }\r\n }\r\n\r\n private exportExcel(\r\n data: Record<string, any>[],\r\n headers: string[],\r\n fileName: string\r\n ) {\r\n import('xlsx').then(xlsx => {\r\n\r\n const worksheet = xlsx.utils.json_to_sheet(data, {\r\n header: headers\r\n });\r\n\r\n const workbook = {\r\n Sheets: { [fileName]: worksheet },\r\n SheetNames: [fileName]\r\n };\r\n\r\n const excelBuffer = xlsx.write(workbook, {\r\n bookType: 'xlsx',\r\n type: 'array'\r\n });\r\n\r\n const blob = new Blob([excelBuffer], {\r\n type: 'application/octet-stream'\r\n });\r\n\r\n FileSaver.saveAs(blob, `${fileName}.xlsx`);\r\n });\r\n }\r\n\r\n
|
|
1
|
+
{"version":3,"file":"angel199-exporter.mjs","sources":["../../../projects/exporter/src/lib/exporter.ts","../../../projects/exporter/src/lib/exporter.service.ts","../../../projects/exporter/src/public-api.ts","../../../projects/exporter/src/angel199-exporter.ts"],"sourcesContent":["import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-exporter',\r\n imports: [],\r\n template: ``,\r\n styles: ``,\r\n})\r\nexport class Exporter {\r\n\r\n}\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { MessageService } from 'primeng/api'; // uso diretto della libreria\r\n\r\nimport jsPDF from 'jspdf';\r\nimport autoTable from 'jspdf-autotable';\r\nimport * as FileSaver from 'file-saver';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExportService {\r\n \r\n\r\n constructor(private messagesService:MessageService){}\r\n\r\n // esempio metodo notifiche\r\n private notify(message: string) {\r\n this.messagesService.add({ severity: 'info', summary: 'Export', detail: message });\r\n }\r\n\r\n exportDataTable(\r\n data: any[],\r\n allColumns: any[],\r\n format: 'PDF' | 'XLSX',\r\n fileName: string\r\n ) {\r\n\r\n const fieldsToKeep = allColumns.map(col => col.field);\r\n const headers = allColumns.map(col => col.header);\r\n\r\n const filteredArray = data.map(item => {\r\n const result: any = {};\r\n\r\n fieldsToKeep.forEach(field => {\r\n const column = allColumns.find(c => c.field === field);\r\n if (column && item[field] !== undefined) {\r\n result[column.header] = item[field];\r\n }\r\n });\r\n\r\n return result;\r\n });\r\n\r\n this.notify(\"Attendere, il report è in fase di caricamento.\");\r\n\r\n if (format === 'XLSX') {\r\n this.exportExcel(filteredArray, headers, fileName);\r\n } else {\r\n this.exportPdf(filteredArray, headers, fileName);\r\n }\r\n }\r\n\r\n private exportExcel(\r\n data: Record<string, any>[],\r\n headers: string[],\r\n fileName: string\r\n ) {\r\n import('xlsx').then(xlsx => {\r\n\r\n const worksheet = xlsx.utils.json_to_sheet(data, {\r\n header: headers\r\n });\r\n\r\n const workbook = {\r\n Sheets: { [fileName]: worksheet },\r\n SheetNames: [fileName]\r\n };\r\n\r\n const excelBuffer = xlsx.write(workbook, {\r\n bookType: 'xlsx',\r\n type: 'array'\r\n });\r\n\r\n const blob = new Blob([excelBuffer], {\r\n type: 'application/octet-stream'\r\n });\r\n\r\n FileSaver.saveAs(blob, `${fileName}.xlsx`);\r\n });\r\n }\r\n\r\n private exportPdf(data: any[], headers: string[], fileName: string) {\r\n\r\n const doc = new jsPDF();\r\n\r\n const rows = data.map(obj =>\r\n headers.map(h => obj[h] ?? '')\r\n );\r\n\r\n autoTable(doc, {\r\n head: [headers],\r\n body: rows,\r\n theme: 'grid',\r\n startY: 20,\r\n styles: {\r\n fontSize: 9\r\n },\r\n headStyles: {\r\n fillColor: [41, 128, 185],\r\n textColor: 255,\r\n fontStyle: 'bold'\r\n }\r\n });\r\n\r\n doc.save(`${fileName}.pdf`);\r\n}\r\n\r\n}\r\n\r\n","/*\r\n * Public API Surface of exporter\r\n */\r\n\r\nexport * from './lib/exporter';\r\nexport * from './lib/exporter.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@angel199/exporter",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.11",
|
|
4
4
|
"description": "PrimeNG table exporter (Excel & PDF) for Angular",
|
|
5
5
|
"author": "Angelo Castaldo",
|
|
6
6
|
"license": "MIT",
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
"primeng": "^16.0.0 || ^17.0.0 || ^18.0.0",
|
|
12
12
|
"primeicons": "^6.0.0 || ^7.0.0",
|
|
13
13
|
"file-saver": "^2.0.5",
|
|
14
|
-
"jspdf": "^2.5.0",
|
|
15
14
|
"xlsx": "^0.18.5",
|
|
15
|
+
"jspdf": "^2.5.0",
|
|
16
16
|
"jspdf-autotable": "^3.8.0"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
@@ -12,7 +12,7 @@ declare class ExportService {
|
|
|
12
12
|
private notify;
|
|
13
13
|
exportDataTable(data: any[], allColumns: any[], format: 'PDF' | 'XLSX', fileName: string): void;
|
|
14
14
|
private exportExcel;
|
|
15
|
-
exportPdf
|
|
15
|
+
private exportPdf;
|
|
16
16
|
static ɵfac: i0.ɵɵFactoryDeclaration<ExportService, never>;
|
|
17
17
|
static ɵprov: i0.ɵɵInjectableDeclaration<ExportService>;
|
|
18
18
|
}
|