Membuat Report Excel Dengan Modul Report XLSX

1. Download modul Base Report XLSX disini.

2. Letakkan modul Report XLSX sejajar dengan lokasi addons.

3. Tambahkan dependencies di file manifest modul kalian yang ingin dibuat report excel-nya.

"depends": ["base""hr""hr_payroll","report_xlsx"],


4. Buat wizard jika diperlukan untuk memfilter data report-nya.






5. Buat report action, boleh buat file baru dengan nama report.xml atau bisa di letakkan di tempat lain.

<report id="report_pinjaman_xlsx" model="report.pinjaman.wizard" string="Laporan Pinjaman Karyawan" report_type="xlsx" 
name="ab_hr_cicilan.report_pinjaman_xlsx" file="Laporan Pinjaman Karyawan" attachment_use="False"/>


6. Buat button atau menu item dengan menjalankan function berikut:

def download_xlsx_report(self):
        template_report = 'ab_hr_cicilan.report_pinjaman_xlsx'
        return self.env.ref(template_report).report_action(self)


Variabel template_report adalah 'nama_modul.id_report_xml'.

7. Buat file python untuk membuat format dan menarik data dari odoo ke Excel, dengan isi kurang lebih seperti berikut:

from odoo import fields, models, api
from datetime import timedelta, datetime, date
from dateutil import relativedelta
from xlsxwriter.utility import xl_range
from xlsxwriter.utility import xl_rowcol_to_cell


class CicilanReportXlsx(models.AbstractModel):
    _name = 'report.ab_hr_cicilan.report_pinjaman_xlsx'
    _inherit = 'report.report_xlsx.abstract'

    def generate_xlsx_report(selfworkbookdataobj):


Yang perlu diperhatikan adalah:

- Variabel _name diisi dengan format "report.nama_modul.id_report_xml".

- Variabel _inherit biarkan default seperti itu.

- Nama function (generate_xlsx_report) juga biarkan default.

8. Tambahkan format excel seperti berikut:

text_style = workbook.add_format({'font_size'10'left'1'bottom'1'right'1'top'1'align''center''valign''vcenter'
'text_wrap'True, })
sub_header = workbook.add_format({'align''center''valign''vcenter''size'11'bold'True})
cell_text_format = workbook.add_format({'align''left''valign''vcenter''bold'True'size'12})
cell_text_format_top_left_right = workbook.add_format({'align''center''valign''vcenter''bold'True'size'11'top'1,
'left'1'right'1'bottom'1})
cell_text_format_top_left_right.set_bg_color('#80a7fa')
worksheet = workbook.add_worksheet('Laporan Pinjaman Karyawan')


Yang perlu diperhatikan adalah:

- Format diatas yang nantinya akan dipanggil disetiap kolom atau baris yang kita buat.

- Variabel worksheet yang akan muncul di sheet excel ketika di cetak nanti, juga sebagai variabel yang dipanggil ketika membuat kolom atau baris.

Kita juga dapat mengatur ukuran kolom excel dengan:

worksheet.set_column('A:B'20)
worksheet.set_column(1130)


Keterangan:

- Worksheet diambil dari variabel worksheet yang sudah kita definisikan diatas.

- 'A:B' Adalah mengatur panjang kolom A sampai B sejumlah 20px.

- '1, 1' Adalah mengatur panjang kolom Kedua (karena hitungannya mulai dari 0, jadi kalo 1 adalah 2) sejumlah 20px.

Jadi, kita dapat menentukan kolom dengan 2 cara, yaitu dengan memanggil nama kolom atau dengan angka.

Untuk mengisi sebuah kolom atau row bisa gunakan cara berikut:

worksheet.write(2, 1, 'Isi', text_style)


Keterangan:

- Format write adalah worksheet.write(baris, kolom, 'Isi text', nama_format)

Kita juga dapat melakukan merge atau menggabungkan sebuah kolom atau baris seperti berikut:

worksheet.merge_range(4050'NO', cell_text_format_top_left_right)
worksheet.merge_range('D1:F2''LAPORAN PINJAMAN KARYAWAN', heading_format)


Keterangan:

- Format merge_range adalah worksheet.merge_range(baris_awal, kolom_awal, baris_akhir, kolom_akhir, 'Isi text', nama_format)


Untuk dokumentasi lengkapnya, bisa langsung ke website resminya https://xlsxwriter.readthedocs.io/

Cukup sekian artikel saya hari ini, terimakasih, Wassalamualaikum Wr. Wb.