diff --git a/app/src/main/java/com/atm/bondowowo/ui/settings/SettingsFragment.kt b/app/src/main/java/com/atm/bondowowo/ui/settings/SettingsFragment.kt
index 39aeb2ee1e2c323f12e29671c4f2c98407aa7b34..0289894aedb596ab4bf2296e51c889908463cc69 100644
--- a/app/src/main/java/com/atm/bondowowo/ui/settings/SettingsFragment.kt
+++ b/app/src/main/java/com/atm/bondowowo/ui/settings/SettingsFragment.kt
@@ -1,5 +1,7 @@
 package com.atm.bondowowo.ui.settings
 
+import android.app.AlertDialog
+import android.content.DialogInterface
 import android.content.Intent
 import android.os.Bundle
 import android.view.LayoutInflater
@@ -38,8 +40,9 @@ class SettingsFragment : Fragment() {
         database = AppDatabase.getInstance(context)
 
         btn_export.setOnClickListener {
-            val listOfTransactions = database.transactionDao().getAll()
-            ExportToFileUtil.exportDataToFile(requireContext(), listOfTransactions)
+//            val listOfTransactions = database.transactionDao().getAll()
+//            ExportToFileUtil.exportDataToFile(requireContext(), listOfTransactions)
+            showExportFileDialog()
         }
 
         btn_send_email.setOnClickListener {
@@ -73,5 +76,24 @@ class SettingsFragment : Fragment() {
         requireContext().sendBroadcast(intent)
     }
 
+    private fun showExportFileDialog() {
+        val options = arrayOf("XLSX", "XLS")
+        val builder = AlertDialog.Builder(requireContext())
+        builder.setTitle("Choose file format")
+        builder.setItems(options, DialogInterface.OnClickListener { dialog, which ->
+            when (which) {
+                0 -> exportToFormat("xlsx")
+                1 -> exportToFormat("xls")
+            }
+            dialog.dismiss()
+        })
+        builder.show()
+    }
+
+    private fun exportToFormat(fileFormat: String) {
+        val listOfTransactions = database.transactionDao().getAll()
+        ExportToFileUtil.exportDataToFile(requireContext(), listOfTransactions, fileFormat)
+    }
+
 
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/atm/bondowowo/utils/ExportToFileUtil.kt b/app/src/main/java/com/atm/bondowowo/utils/ExportToFileUtil.kt
index 383fe812b14cd50780de7318ae90c29c7688838f..320b070f340f07bec54faf854cc2951b7250c80c 100644
--- a/app/src/main/java/com/atm/bondowowo/utils/ExportToFileUtil.kt
+++ b/app/src/main/java/com/atm/bondowowo/utils/ExportToFileUtil.kt
@@ -11,7 +11,8 @@ object ExportToFileUtil {
 
     fun exportDataToFile(
         context: Context,
-        transactionEntities: List<TransactionEntity>
+        transactionEntities: List<TransactionEntity>,
+        fileFormat: String
     ) {
         val networkStateLiveData = NetworkStateLiveData(context)
         networkStateLiveData.observeForever { isConnected ->
@@ -40,13 +41,20 @@ object ExportToFileUtil {
                 dataRow.createCell(4).setCellValue(transaction.lokasi ?: "")
             }
 
-            val file = File(context.getExternalFilesDir(null), "transaction_data.xlsx")
+            val file = if(fileFormat == "xlsx"){
+                File(context.getExternalFilesDir(null), "transaction_data.xlsx")
+            } else{
+                File(context.getExternalFilesDir(null), "transaction_data.xls")
+            }
+
             val outputStream = FileOutputStream(file)
             workbook.write(outputStream)
             workbook.close()
             outputStream.close()
 
             Toast.makeText(context, "Data exported to ${file.absolutePath}", Toast.LENGTH_SHORT).show()
+//            Toast.makeText(context, file.name, Toast.LENGTH_SHORT).show()
+
         } else {
             Toast.makeText(context, "No transaction data available", Toast.LENGTH_SHORT).show()
         }
diff --git a/app/src/main/java/com/atm/bondowowo/utils/SendEmailUtil.kt b/app/src/main/java/com/atm/bondowowo/utils/SendEmailUtil.kt
index 4fb1ee3cf8fa59742a18f4d35ec024faf37a1c9d..dfca89a1190d695c329dc5e7a3b9bc694722bb6a 100644
--- a/app/src/main/java/com/atm/bondowowo/utils/SendEmailUtil.kt
+++ b/app/src/main/java/com/atm/bondowowo/utils/SendEmailUtil.kt
@@ -22,23 +22,15 @@ object SendEmailUtil {
             val uri =
                 FileProvider.getUriForFile(context, "${context.packageName}.fileprovider", file)
 
-            val resInfoList =
-                context.packageManager.queryIntentActivities(Intent(Intent.ACTION_SEND).apply {
-                    type = "application/vnd.ms-excel"
-                    putExtra(Intent.EXTRA_STREAM, uri)
-                }, Context.MODE_PRIVATE)
+            val mimeType = if (file.extension == "xlsx") {
+                "application/vnd.ms-excel"
+            } else {
+                "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
 
-            for (resolveInfo in resInfoList) {
-                val packageName = resolveInfo.activityInfo.packageName
-                context.grantUriPermission(
-                    packageName,
-                    uri,
-                    Intent.FLAG_GRANT_WRITE_URI_PERMISSION or Intent.FLAG_GRANT_READ_URI_PERMISSION
-                )
             }
 
             val emailIntent = Intent(Intent.ACTION_SEND)
-            emailIntent.type = "application/vnd.ms-excel"
+            emailIntent.type = mimeType
             emailIntent.putExtra(Intent.EXTRA_EMAIL, arrayOf(UserPreferencesUtil.getEmail(context)))
             emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Export File")
             emailIntent.putExtra(
@@ -47,6 +39,8 @@ object SendEmailUtil {
             )
             emailIntent.putExtra(Intent.EXTRA_STREAM, uri)
 
+            emailIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
+
             try {
                 context.startActivity(Intent.createChooser(emailIntent, "Send mail..."))
             } catch (ex: android.content.ActivityNotFoundException) {
@@ -71,3 +65,4 @@ object SendEmailUtil {
         return files?.firstOrNull()
     }
 }
+