Import Excel File

Pada tutorial sebelumnya kita telah mempelajari cara membuat wizard untuk melakukan export dan import file csv kemudian cara mengexport file excel dalam bentuk accounting report (balance sheet). Kali ini -in syaa ALLAH- kita akan mencoba untuk melakukan import file excel menggunakan wizard pada OpenERP.

Untuk menghemat materi, tulisan ini bisa kita gabungkan pada tutorial ini, mengingat samanya code dan tujuan tutorial hanya cara pembacaan filenya saja yang berbeda, jika pada tutorial sebelumnya adalah file csv sedangkan saat ini file excel.

Beberapa hal yang akan kita rubah yang pertama adalah field dengan tipe binary, yaitu :


class EksportImport(osv.osv_memory):
    _name = "eksport.import"
    _columns = {
                ...
                'data_file': fields.binary('File Excel', required=True, filters='*.xls'),
                ...
                }   

Kita tambahkan parameter filters yang bertujuan untuk pemilihan file hanya bertipe excel dan parameter required untuk menjadikan field tersebut mandatory.

Oh iya, sebelumnya kita harus menginstall library xlrd terlebih dahulu, caranya lewat terminal :

sudo apt-get install python-xlrd

Untuk code tampilannya (GUI) tidak mengalami perubahan, jadi kita langsung fokuskan pada method button import yang akan kita rubah sebagian codenya seperti dibawah ini :


    def import_excel(self, cr, uid, ids, context=None):
        val = self.browse(cr, uid, ids)[0]
        
        # Membalikan enkripsi (decoding) menjadi sebuah file excel
        data = base64.decodestring(val.data_file)
        
        # Membaca file excel dengan library python yaitu xlrd
        excel = xlrd.open_workbook(file_contents = data)  
        
        # Menentukan sheet yang akan dibaca (sheet pertama)
        sh = excel.sheet_by_index(0)  
        
        # Mencetak nama sheet, jumlah baris, dan jumlah kolom
        print sh.name, sh.nrows, sh.ncols  
        
        # Menjadikan list dari masing-masing baris excel lalu mencetaknya
        for rx in range(sh.nrows):  
            print [sh.cell(rx, ry).value for ry in range(sh.ncols)]  

             ........ 

        return {}                
                  

Untuk code selanjutnya mungkin bisa temen-temen lanjutkan sesuai dengan kebutuhan apakah akan membuat record baru ataupun lainnya. Mungkin ini saja yang bisa saya sampaikan, semoga bermanfaat …

Advertisements

One thought on “Import Excel File

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s