Membuat Excel Reader Menggunakan Python

Membuat Excel Reader Menggunakan Python – pesonainformatika.com studi kasus kali ini kita akan membuat program untuk membaca file excel menggunakan python, nah kali ini kita membuat aplikasi berbasis desktop, kita akan menggunakan framework pyqt5, bagaimana caranya? yuk simak caranya

Rancangan Program

kali ini kita akan membuat program berbasis desktop dimana program kita ananti akan membaca file .xlsx lalu akan di load datanya kemudian ditampilkan dalam aplikasi kita, jika sudah paham langsung saja ke persiapan program.

Persiapan Projects

untuk mulai membuat project, pastikan sudah menginstal python di sistem operasi lalu kita perlu menginstall library yang dibutuhkan untuk membuat project ini, berikut library-nya

cara installnya cukup mudah bisa menggunakan pip seperti ini

pip install pyqt5

kemudian install pandas dengan perintah

pip install pandas

setelah semua terinstall, kita masuk ke langkah selanjutnya yaitu membuat projects

Membuat Projects

pertama kita perlu import modul yang dibutuhkan

import sys
import pandas as pd
from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QTableWidgetItem, QPushButton, QHeaderView, QHBoxLayout, QVBoxLayout
from PyQt5.QtCore import Qt

kemudian kita buat class MainWindow buat konfigurasi Aplikasi Kita

class MainWindow(QWidget):
    def __init__(self):
        super(MainWindow, self).__init__()

selanjutnya kita konfigurasi ManiWindow aplikasi

# set window width
self.window_width = 700
self.window_height = 500

# resize window
self.resize(self.window_width, self.window_height)
self.setWindowTitle("Excel Readers")

nah sekaang kita akan coba buat layoutnya supaya kita dapat menambahkan widget untuk aplikasi yang tadi dibuat

# layout settings
layout = QVBoxLayout()
self.setLayout(layout)

selanjutnya supaya kita dapat menampilkan table kita perlu menambahkan QTableWidget() agar table yang kita load itu rapi seperti ini

# Table Settings
self.table = QTableWidget()
layout.addWidget(self.table)

baru setelah ini kita menambahkan tombol untuk bisa menambahkan file excel

# Button Config
self.button = QPushButton("Load .xlsx or csv File")
self.button.clicked.connect(self.load_excel_data)
layout.addWidget(self.button)

dalam kasus ini kita belum mempunyai method load_excel_data() maka kita buat method nya agar ketika kita klik tombil tersebut kita bisa load file .xlsx pada aplikasi kita seperti ini

# create method to load excel file
def load_excel_data(self):
    dialog = QFileDialog()
    dialog.setFileMode(QFileDialog.AnyFile)
    dialog.setFilter(QDir.Files)

    if dialog.exec_():
        filename = dialog.selectedFiles()
        if filename[0].endswith('.xlsx'):
            df = pd.read_excel(filename[0])
            if df.size == 0:
                return
            else:
                df.fillna('', inplace=True)
                self.table.setRowCount(df.shape[0])
                self.table.setColumnCount(df.shape[1])

                # returns pandas array object
                for row in df.iterrows():
                    values = row[1]
                    for col_index, value in enumerate(values):
                        if isinstance(value, (float, int)):
                            value = '{0:0,.0f}'.format(value)
                        tableitem = QTableWidgetItem(str(value))
                        self.table.setItem(row[0], col_index, tableitem)

                self.table.setColumnWidth(2, 300)
        else:
            pass

nah sekarang langkah terakhir buat kita konfigurasi agar aplikasi kita bisa dijalankan dengan baik

if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.setStyleSheet('''
            QWidget {
                font-size: 17px;
            }
        ''')

    main_window = MainWindow()
    main_window.show()

    try:
        sys.exit(app.exec_())
    except SystemExit:
        print('Closing Window')

jika aplikasi kita jalankan hasilnya akan seperti ini

tampilan ketika akan load file excel
tampilan setelah file excel berhasil di load

Final Code

berikut adalah final code pada materi kali ini

import sys

import pandas as pd
from PyQt5.QtCore import QDir
from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QTableWidgetItem, QPushButton, QVBoxLayout, QFileDialog


class MainWindow(QWidget):
    def __init__(self):
        super(MainWindow, self).__init__()

        # set window width
        self.window_width = 700
        self.window_height = 500

        # resize window
        self.resize(self.window_width, self.window_height)
        self.setWindowTitle("Excel Readers")

        # layout settings
        layout = QVBoxLayout()
        self.setLayout(layout)

        # Table Settings
        self.table = QTableWidget()
        layout.addWidget(self.table)

        # Button Config
        self.button = QPushButton("Load .xlsx or csv File")
        self.button.clicked.connect(self.load_excel_data)
        layout.addWidget(self.button)

    # create method to load excel file
    def load_excel_data(self):
        dialog = QFileDialog()
        dialog.setFileMode(QFileDialog.AnyFile)
        dialog.setFilter(QDir.Files)

        if dialog.exec_():
            filename = dialog.selectedFiles()
            if filename[0].endswith('.xlsx'):
                df = pd.read_excel(filename[0])
                if df.size == 0:
                    return
                else:
                    df.fillna('', inplace=True)
                    self.table.setRowCount(df.shape[0])
                    self.table.setColumnCount(df.shape[1])

                    # returns pandas array object
                    for row in df.iterrows():
                        values = row[1]
                        for col_index, value in enumerate(values):
                            if isinstance(value, (float, int)):
                                value = '{0:0,.0f}'.format(value)
                            tableitem = QTableWidgetItem(str(value))
                            self.table.setItem(row[0], col_index, tableitem)

                    self.table.setColumnWidth(2, 300)
            else:
                pass


if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.setStyleSheet('''
            QWidget {
                font-size: 17px;
            }
        ''')

    main_window = MainWindow()
    main_window.show()

    try:
        sys.exit(app.exec_())
    except SystemExit:
        print('Closing Window')

atau bisa melakukan clone melalui github di https://github.com/pesonainformatika/excel-reader

sekian studi kasus membuat excel reader Menggunakan Python kali ini, semoga bermanfaat dan mencoba, ikuti studi kasus lainya di pesonainformatika ada beberapa bahasa pemrograman lainya seperti Java, Python  C++