Pada tutorial sebelumnya kita telah membahas bagaimana cara membuat export data ke dalam format .CSV pada Django Framework. Selanjutnya kita akan membahas bagaimana cara membuat export data kedalam format .XLSX

Secara default django framework tidak menyediakan library untuk membuat format data kedalam format .XLSX, oleh karena ini kita membutuhkan library tambahan untuk bisa mengolah ataupun menyajikan data dalam format XLSX.

Salah satu library yang cukup di rekomendasikan pada bahasa python untuk mengubah data kedalam format XLSX adalah OPENPYXL, library ini membantu kamu mengolah ataupun menyajikan data dalam format XLSX.

Integrasi OPENPYXL ke Django Framework

Pastikan sebelumnya kamu sudah berada dalam mode environment, untuk tau lebih lanjut apa itu python virtualenvironment, baca link ini : Konfigurasi python virtualenvironment.

Setelah berada dalam mode environment, install OPENPYXL denga pip

pip install openpyxl

Import library dengan cara seperti dibawah ini

from openpyxl import Workbook

Study Kasus

Kita akan melakukan export data pada table product ke dalam format XLSX, perhatikan table berikut ini :
CREATE TABLE product (
	id serial NOT NULL,
	product_name varchar(255) NOT NULL,
	price int4 NULL,
	limit_user int4 NULL,
);
Buat function untuk melakukan export data ke format xlsx, perhatikan kode dibawah ini:
from openpyxl import Workbook
from datetime import datetime
from apps.models import Product
def export_to_xlsx(request):
    response = HttpResponse(
        content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
    )
    response['Content-Disposition'] = 'attachment; filename={date}-product.xlsx'.format(
        date=datetime.now().strftime('%Y-%m-%d'),
    )
    workbook = Workbook()
 
    # Get active worksheet/tab
    worksheet = workbook.active
    worksheet.title = 'Product'
 
    # Define the titles for columns
    columns = [
        'Name','Price','Limit User'
    ]
    row_num = 1
    # Assign the titles for each cell of the header
    for col_num, column_title in enumerate(columns, 1):
        cell = worksheet.cell(row=row_num, column=col_num)
        cell.value = column_title
 
    products = Product.objects.all()
    for prod in products:
        row = [prod.name,prod.price,prod.limit_user]
 
        for col_num, cell_value in enumerate(row, 1):
            cell = worksheet.cell(row=row_num, column=col_num)
            cell.value = cell_value
 
    workbook.save(response)
 
    return response

Dari kode diatas melalui variable response, kita membuat header dengan

content_type=’application/vnd.openxmlformats-officedocument.spreadsheetml.sheet’

, saat function export_to_xlsx di panggil sistem akan mengirimkan data dalam bentuk XLSX.

Baca artikel lainya :