Django Export Data XLSX dengan Openpyxl

Subscribe Dengan Account Google Untuk Membaca Artikel Tanpa Iklan
Django Export Data XLSX dengan Openpyxl

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 :