Cara Cetak Atau Export Excel Java Android Studio

Cara Cetak Atau Export Excel Java Android Studio

sobatcoding.com - Cara cetak atau export excel menggunakan Java Android Studio

Artikel kali ini kita akan mencoba export Excel menggunakan Android Studio versi Java. Kita akan mendownload dari TableLayout yang sudah kita generate sebelumnya, kemudian kita ambil tableRow yang kemudian kita gunakan sebagai row excel. Bagaimana caranya? Langsung saja kita praktekkan.

 

Langkah pertama kita buat dahulu project baru

Install Dependencies

Untuk export ke Excel kitambahkan dependencies berikut di build.gradle

implementation 'org.apache.poi:poi:4.0.0'
implementation 'org.apache.poi:poi-ooxml:4.0.0'

 

Activity_main.xaml

Buatlah layout sederhana seperti berikut :

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_weight="1"
    android:background="@color/light"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="match_parent">

        <androidx.cardview.widget.CardView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="16sp"
            android:layout_marginRight="16sp"
            android:layout_marginTop="16sp"
            android:layout_marginBottom="16sp"
            android:orientation="vertical"
            >

            <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal|center_vertical"
            android:orientation="vertical">
           
                <androidx.appcompat.widget.AppCompatButton
                    android:id="@+id/btnExport"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="25sp"
                    android:layout_marginLeft="16sp"
                    android:layout_marginRight="16sp"
                    android:layout_marginBottom="25sp"
                    android:padding="15sp"
                    android:text="Export Excel"
                    android:textColor="@color/white"
                    android:textAllCaps="true"
                    android:textSize="14sp"
                    android:background="@color/success"/>

            <TableLayout
                android:id="@+id/tbLayout"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginLeft="16sp"
                android:layout_marginRight="16sp"
                android:layout_marginBottom="16sp"
                android:stretchColumns="*"
                android:background="@color/success">
                <TableRow
                    android:layout_margin="10sp"
                    >
                    <TextView
                        android:text="Tanggal"
                        android:textColor="@color/white"/>
                    <TextView
                        android:text="Jam Masuk"
                        android:textColor="@color/white"/>
                    <TextView
                        android:text="Jam Pulang"
                        android:textColor="@color/white"/>
                </TableRow>
                <TableRow
                    android:layout_margin="10sp"
                    >
                    <TextView
                        android:text="08-03-2023"
                        android:textColor="@color/white"/>
                    <TextView
                        android:text="07:00"
                        android:textColor="@color/white"/>
                    <TextView
                        android:text="16:00"
                        android:textColor="@color/white"/>
                </TableRow>
                <TableRow
                    android:layout_margin="10sp"
                    >
                    <TextView
                        android:text="08-03-2023"
                        android:textColor="@color/white"/>
                    <TextView
                        android:text="07:00"
                        android:textColor="@color/white"/>
                    <TextView
                        android:text="16:00"
                        android:textColor="@color/white"/>
                </TableRow>
                <TableRow
                    android:layout_margin="10sp"
                    >
                    <TextView
                        android:text="08-03-2023"
                        android:textColor="@color/white"/>
                    <TextView
                        android:text="07:00"
                        android:textColor="@color/white"/>
                    <TextView
                        android:text="16:00"
                        android:textColor="@color/white"/>
                </TableRow>
            </TableLayout>

        </LinearLayout>
        </androidx.cardview.widget.CardView>
    </ScrollView>

</RelativeLayout>

 

Dari kode di atas kita akan membuat sebuah tabel terdiri dari 3 kolom, tanggal, jam masuk dan jam pulang dan terdiri dari 2 row table.

 

MainActivity.java

Source code:

Button btnPrint;
TableLayout tbLayout;

   @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnPrint = findViewById(R.id.btnExport);
        tbLayout = findViewById(R.id.tbLayout);

        btnPrint.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                exportExcel();
        });

Kemudian buatlah function export excel seperti berikut:

private void exportExcel()
    {
        //nama file adalah history-absensi.xls
        //file akan disimpna di folder Download
        File file = new File(Environment.getExternalStorageDirectory().toString() + "/Download/" + "/history-absensi.xls");

        workbook = new HSSFWorkbook();
        sheet = workbook.createSheet(EXCEL_SHEET_NAME);

        Row row;
        int countTableRow = tbHistory.getChildCount();
        for(int i = 0, j = countTableRow; i < j; i++) {

            //Untuk i = 0 akan mengambil tableRow index-0 yaitu header dari Table Layout
           
            row = sheet.createRow((i+1));
            TableRow tbRow = (TableRow) tbHistory.getChildAt(i);
            int countChildTbrow = tbRow.getChildCount();
            for(int k = 0, cN = countChildTbrow; k < cN; k++) {
                //mengambil atau membaca textView child dari TableRow ke - k
                TextView txtView = (TextView) tbRow.getChildAt(k);
                cell = row.createCell(k);
                cell.setCellValue(txtView.getText().toString());
            }

        }

        try {
            if (!file.exists()){
                file.createNewFile();
            }

            FileOutputStream fileOutputStream= new FileOutputStream(file);
            workbook.write(fileOutputStream);
            Log.e("EXCEL", "Writing file" + file);

            if (fileOutputStream!=null){
                fileOutputStream.flush();
                fileOutputStream.close();

                Log.i("EXCEL", fileOutputStream.toString());
            }
        } catch (Exception e) {
            e.printStackTrace();
            Log.e("EXCEL", e.getMessage());
        }

        Toast.makeText(getApplicationContext(), "Download excel file", Toast.LENGTH_SHORT).show();
    }

 

Selamat mencoba.