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
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'
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.
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.
Komentar 0