Well, kali ini kita telah mempunyai dua buah post, yaitu :

  1. Yang Pertama
  2. Yang Kedua

Di post yang pertama, kita telah belajar untuk mengeksporkan String “Hello World” ke dalam file Excel, dan di post yang kedua, kita telah belajar bagaimana menyambungkan aplikasi ke database MySQL, dan mengeksekusi query MySQL. Nah sekarang kita akan menggabungkan keduanya. Kita akan mengambil data dari MySQL kemudian mengeksportnya ke dalam format XLS/Excel.

Aplikasi ini melibatkan penggunaan Inner Class, yang belum sempat saya jelaskan 😀 . Namun tanpa mengerti konsep Inner Class tutorial ini tetap bisa dipahami dengan mudah. Saya menggunakan kode yang terdiri dari potongan kode post yang pertama dan potongan kode post yang kedua. Hanya dimodifikasi sedikit, bagi yang ingin mencoba, ada beberapa parameter yang harus diganti, parameter-parameter tersebut adalah :

  • Database Url (pada tutorial menggunakan db_url mySQL di sistem saya)
  • Database Username
  • Database Password
  • Nama database (pada tutorial menggunakan database bernama “gangguan”)

Nah, saya serahkan kepada kreativitas pembaca untuk mengubah parameter-parameter di atas. 🙂

Kenapa?

Tentu, mungkin Anda bertanya-tanya, apa gunanya tutorial ini? Untuk apa kita membuat aplikasi, yang mengambil data dari MySQL dan kemudian menyimpannya dalam format XLS. Dalam lingkup desktop application, mungkin tutorial ini tidak begitu berguna, namun apabila Anda ditugaskan untuk membuat sebuah Java Enterprise Application, sebuah web yang merekam transaksi nasabah pada suatu bank, dan data nasabah itu harus bisa diunduh dalam bentuk file excel, untuk misalnya keperluan evaluasi. Maka itulah kurang lebih implementasi dari tutorial ini.

Here we go with the code, seperti biasa, saya membuat menggunakan Netbeans IDE. Dan jangan lupa mengunduh driver-driver yang diperlukan (driver SQL, driver JexcelAPI) dan meng-copy-nya ke dalam folder project Anda.

/**
*
* @author Herdi Naufal
*/

import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.Workbook;
import java.io.File;
import java.sql.SQLException;
import java.util.Properties;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.Connection;
import static java.lang.System.*;
public class Database {
    public static void main(String[] args){
//Memanggil program dengan menspesifikasikan url database, username dan password
            new DB().connectDB("jdbc:mysql://localhost:3306/gangguan","root","");
        }
}

class DB{
        //Inner class untuk fungsi Printer
        public class Printer{
            //nomer index baris
            int editNum = 1;
            //fungsi Print
            public void ngePrint(ResultSet rs)
            {
                try {
       //Mendefinisikan file XLS baru bernama "output.xls"
              WritableWorkbook w = Workbook.createWorkbook(new File("output.xls"));
                        //Membuat sheet baru bernama "Sheet Baru"
                 WritableSheet s = w.createSheet("Sheet Baru", 0);

                        //Menambahkan label "pelanggan"
                        s.addCell(new Label(0, 0, "PELANGGAN"));
                        //Menambahkan label bernama "alamat"
                        s.addCell(new Label(1, 0, "ALAMAT"));

                        while(rs.next())
                        {
 //Input data alamat, baris akan bertambah seiring bertambahnya editNum.
                            //Angka 0 menandakan kolom A
                            s.addCell(new Label(0, editNum, rs.getString("alamat")));

 //Input data alamat, baris akan bertambah seiring bertambahnya editNum.
                            //Angka 1 menandakan kolom B
                            s.addCell(new Label(1, editNum, rs.getString("pelanggan")));

                            editNum++;
                        }
                        //Menulis data ke excell shet
                        w.write();
                        //Menutup sambungan
                        w.close();
                    } catch (Exception aoEx) {
                        aoEx.printStackTrace();
                        System.err.print(aoEx);
                    }
            }
        }

        public void connectDB(String db_url, String db_username, String db_password){
                try {
                    //Membuat sambungan ke database
                    Connection sambungan = null;

                    //instantiasi Driver
                    Class.forName("com.mysql.jdbc.Driver").newInstance();

                    //Membuat ResultSet untuk menampung hasil
                    ResultSet rs;

                    //Membuat Statement untuk mengeksekusi query
                    Statement stmt;

                    //Query String
                    String query = "select * from gangguan";

   //Connection Properties, menspesifikasikan username dan password
                    Properties connectionProps = new Properties();
                    connectionProps.put("user", db_username);
                    connectionProps.put("password", db_password);

                    //Menyambungkan aplikasi dengan database
   sambungan = DriverManager.getConnection(db_url,connectionProps);

                    //Membuat statemen untuk query
                    stmt = sambungan.createStatement();
                    if(!sambungan.isClosed())
                    {
                        out.println("Connected");
                    }

                    //mengeksekusi query
                    rs = stmt.executeQuery(query);

        //Memanggil kelas Printer, dengan melempar data ResultSet
                    //ke dalam method ngePrint
                    new Printer().ngePrint(rs);
                    rs.close();
                    stmt.close();
                    sambungan.close();
                }
                catch(Exception e)
                {
                    if(e.equals(new SQLException()))
                    {
                        SQLException eSQL = (SQLException)e;
                        out.println(eSQL.getMessage());
                        eSQL.getErrorCode();
                    }
                    e.printStackTrace();
                }
     }
}

Dan beginilah hasil akhirnya :

Tampilan File Output.xls


Download aplikasi kami di Google Play Store