1. Membuat Laporan Excel
1. Instalasi package exceljs
Exceljs merupakan library JavaScript yang digunakan untuk membaca, menulis, dan memanipulasi berkas spreadsheet (format .xlsx)
Beberapa fitur ExcelJS meliputi:
- Membuat dan mengedit berkas Excel dari awal.
- Membaca dan menulis data ke sel-sel dalam berkas Excel.
- Membuat berbagai jenis grafik dalam berkas Excel.
- format seperti pengaturan gaya, font, lebar kolom, dan lainnya.
- Mendukung formula Excel.
- Membuat lembar kerja baru dan mengganti nama lembar kerja.
- Mendukung penggabungan sel dan penyusunan ulang data dalam bentuk tabel.
- Menyimpan hasil manipulasi ke dalam berkas .xlsx.
Dokumentasi resmi : https://github.com/exceljs/exceljs
2. Membuat service export excel
order.service.ts
async pdfReport(query: findAllOrderDto, res: Response): Promise<any> {
const result = await this.findAll(query);
try {
const workbook = new Workbook();
const worksheet = workbook.addWorksheet('Laporan');
worksheet.columns = [
{ header: 'No.', key: 'no', width: 10 },
{ header: 'Nomor Order', key: 'nomor_order', width: 20 },
{ header: 'Tanggal Order', key: 'tanggal_order', width: 20 },
{ header: 'Nama Produk', key: 'nama_produk', width: 20 },
{ header: 'Jumlah', key: 'jumlah', width: 20 },
{ header: 'Harga', key: 'harga', width: 20 },
{ header: 'Nama Konsumen', key: 'nama_konsumen', width: 20 },
{ header: 'Total Bayar', key: 'total_bayar', width: 20 },
{ header: 'Dibuat oleh', key: 'created_by', width: 20 },
{ header: 'Diperbaharui oleh', key: 'updated_by', width: 20 },
];
const merge: { start: number; finish: number }[] = [];
let col = 1;
result.data.forEach((item) => {
if (item.order_detail.length >= 1) {
merge.push({
start: col + 1,
finish: col + item.order_detail.length,
});
item.order_detail.map((order) => {
col = col + 1;
worksheet.addRow({
no: col - 1,
nomor_order: item.nomor_order,
tanggal_order: item.tanggal_order,
nama_produk: order.produk.nama_produk,
jumlah: order.jumlah,
harga: order.produk.harga,
nama_konsumen: item.konsumen.nama_konsumen,
total_bayar: 12000,
created_by: item?.created_by?.nama,
updated_by: item?.updated_by?.nama,
});
});
} else {
col = col + 1;
worksheet.addRow({
no: col - 1,
nomor_order: item.nomor_order,
tanggal_order: item.tanggal_order,
nama_produk: '',
jumlah: 0,
harga: 0,
nama_konsumen: item.konsumen.nama_konsumen,
total_bayar: 12000,
created_by: item?.created_by?.nama,
updated_by: item?.updated_by?.nama,
});
}
});
merge.forEach((item) => {
worksheet.mergeCells(item.start, 8, item.finish, 8);
});
res.setHeader(
'Content-Type',
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
);
return workbook.xlsx.write(res).then(function () {
res.status(200).end();
});
} catch (err) {
console.log('err', err);
throw new HttpException('Ada Kesalahan', HttpStatus.BAD_REQUEST);
}
}
3. Membuat Controller Export Excel
order.controller.ts
@Get('download-report-excel')
async excelReport(
@Res() res: Response,
@Pagination() query: findAllOrderDto,
) {
return this.orderService.pdfReport(query, res);
}
4. Pengujian pada postman
Warning
Jika sudah berhasil , silahkan klik sace response to file
untuk menyimpan file excel
ke komputer.
Buka File Excel
Note
Silahkan explore pada dokumentasi resmi untuk pengaturan cell
pada excel
.