Thursday, January 21, 2010

Membaca File Excel

Ada beberapa cara untuk membaca file dari Microsoft Excel. Cara paling mudah menurut saya adalah dengan menggunakan library JExcelApi. Library ini memungkinkan baca dan tulis file excel menjadi mudah.

Berikut ini contoh membaca file excel dengan menggunakan library JExcelApi:


private void bacaFile(File file)
{
    try
    {
        Workbook workbook = Workbook.getWorkbook(file);

        /* baca sheet 1 */
        Sheet sheet = workbook.getSheet(0);

        /* mendapatkan jumlah baris dan kolom */
        int banyakKolom = sheet.getColumns();
        int banyakBaris = sheet.getRows();

        /* deklarasi header tabel */
        String[][] data = new String[banyakBaris][banyakKolom];
        String[] kolom = new String[banyakKolom];

        /* ambil data */
        for (int i = 0; i < banyakBaris; i++)
        {
            for (int j = 0; j < banyakKolom; j++)
            {
                Cell cell = sheet.getCell(j, i);
                if (cell.getType()  == CellType.NUMBER)
                {
                    NumberCell numberCell = (NumberCell)cell;
                    int angka = Double.valueOf(numberCell.getValue()).intValue();
                    data[i][j] = Integer.toString(angka);
                }
                else if (cell.getType() == CellType.DATE)
                {
                    DateCell dateCell = (DateCell)cell;
                    Date date = dateCell.getDate();
                    data[i][j] = date.toString();
                }
                else
                {
                    data[i][j] = cell.getContents();
                }
            }
        }

        /* tampilkan data */
        DefaultTableModel tableModel = new DefaultTableModel(data, kolom);
        display.setModel(tableModel);
    }
    catch(Exception e)
    {
        JDialog.setDefaultLookAndFeelDecorated(true);
        JOptionPane.showMessageDialog(null, "Error: " + e, "Error!", JOptionPane.ERROR_MESSAGE);
    }
} 

Cara tersebut menurut saya yang paling mudah. Setelah menampilkannya pada JTable, maka selanjutkan data dapat digunakan sesuai kebutuhan, misalnya memasukkannya ke database.

Kode programnya dapat didownload di sini.

Thursday, January 7, 2010

Membatasi Jumlah Record pada ResultSet

Saat melakukan kueri dari database, banyaknya data yang diambil dari objek ResultSet sangat mempengaruhi kecepatan dalam menampilkan data. Secara default, objek Statement akan mengeksekusi dan mengambil semua hasil kueri, kemudian menampungnya pada objek ResultSet. Jika ingin membatasi jumlah data pada ResultSet, maka cara membatasinya adalah melalui objek Statement.

Interface Statement memiliki methode setMaxRows(int max) yang digunakan untuk membatasi jumlah data yang dihasilkan. Setiap objek ResultSet yang dihasilkan dari objek Statement ini akan memiliki jumlah data maksimum sebanyak max.

Contoh penggunaannya adalah sebagai berikut:

            Connection con = DriverManager.getConnection(koneksi, "sa", "faisol");
            Statement st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);

            /* membatasi resultset */
            if (batasi)
            {
                int maxRow = Integer.parseInt(batas.getText());
                st.setMaxRows(maxRow);
            }

            ResultSet rs = st.executeQuery("SELECT * FROM Kabupaten");
  
Jika methode setMaxRows() tidak dipanggil, maka seluruh data dari kueri SELECT akan ditampilkan.

Kode selengkapnya dapat didownload di sini.