Last Updated on 13 years by Mas Herdi
Well, kali ini kita telah mempunyai dua buah post, yaitu :
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 :
assalamu’alaykum, punten mau tanya.. penempatan simpan file excel nya, cara ngaturnya gimana ya? terimakasih,, atas ilmunya..
Wa’alaikumsalam
Di bagian ini
WritableWorkbook w = Workbook.createWorkbook(new File(“output.xls”));
Nah, kan ada file output.xls. Itu bisa diganti dengan path ke file yang diinginkan. Kalau hanya dispesifikasikan output.xls saja nanti file-nya akan tampil di folder src/tempat mbak ayu mengcompile programnya 🙂
oh iya, baru inget 🙂 terima kasih banyak… Umm kalo kebalikan, dari file Excel dimasukkan ke Mysql. misal mau menginputkan data yg banyak, menggunakan java. Terima Kasih 😀
Silahkan,
http://wp.me/pF1l8-c6
Modifikasi diperlukan sesuai kebutuhan 🙂
numpang tanya kalo nyimpan file ke excel lewat ny web service (Restfull) gmana y??
saya nyoba file nya g mau dicetak, padahal berhasil.
Bahasa pemrograman web-nya apa ? JSP atau PHP?
ak pakenya JSP
Kalo JSP saya pernah bisa pakai Servlet, udah pernah coba?
Mas ni aku mau tanya
ni kan aku buat program java yang memisahkan sheet.. intinya oitput yang dihasilkan dalam program tersebut ada 2 sheet tapi 1 file mas. lah kasusnya untuk sheet yang pertama di pisah sebanyak 50 yang kedua pun juga kayak begitu. masalahnya sudah bisa dipisah tapi untuk sheet yang ke dua ini kok baris berada pada 50 supaya baris tersebut pindah ke sheet 1 bagaimana mas.
begini tak tunjukin cuplikan kode programnya :
sebelumnya saya ucapkan terima kasih.
kayaknya gara-gara kamu ngeset i ke 50
Mas Brow kalo seumpama yang di pakai bukan IDE NetBeans tapi Intellij apakah cara mongkonesikannya ke dalam Heidi SQL tetep sama kaya begini ;
sebelumnya makasih mas..
yap tetap sama
When I originally commented I clicked the “Notify me when new comments are added” checkbox and now each time a comment is added I get four e-mails with the same comment.
Is there any way you can remove me from that service?
Cheers!
Hello there! I know this is kinda off topic but I was wondering if you knew where I could get a
captcha plugin for my comment form? I’m using the same blog
platform as yours and I’m having problems finding one? Thanks a lot!
terimakasi infonya gan,.sungguh sangat membantu,.
saya mw nanya gan,bisa ga membuat aplikasi android untuk penginputan data mutasi nasabah( penarikan dan setoran tabungan ) dan data basenya bisa di export ke excel,
kemudian data di excel akan di kirim ke komputer kantor untuk update data nasabah,.?
mohon pencerahannya,.?
Saya mau nanyak gan, bisa gak gan membuat aplikasi android untuk penginputan data dan data basenya di export ke excel ? Kemudain data di excel akan dikirimkan lagi ke komputer ??
mohon pencerahannya gan
makash gan